SetRegistryKeyに関する質問 – プログラミング – Home

SetRegistryKeyに関する質...
 
通知
すべてクリア

[解決済] SetRegistryKeyに関する質問


merlo
 merlo
(@merlo)
ゲスト
結合: 23年前
投稿: 85
Topic starter  

たびたびの質問ですみません

レジストリ管理の目的で,
BOOL C***App::InitInstance()
{
.......
...
#else
Enable3dCon....
#endif

SetRegistryKey((任意の文字列));///この部分

....
}

”この部分”を追加することは,知っているのですが,
このファイル(**(プロジェクト名).cpp)を
スペースでも,何でも少しでも修正すると
以下のようなエラーメッセージが発生してしまい,
もうどうすることもできません.

CGDlg.obj : error LNK2005: double * * __cdecl matrix_new(int,int) (?
matrix_new@@YAPAPANHH@Z) はすでに CG.obj で定義されています

↑このメッセージが9つ出ました.
どうでもいいところに,スペースを一個追加しただけで,
エラーが0個から9個になるなんて・・・

どなたか,これに関して,「これは・・・だからだ」
といえそうな方,どうぞよろしくお願いします

w2k VC++6.0 MFC DlgBase


引用未解決
トピックタグ
merlo
 merlo
(@merlo)
ゲスト
結合: 23年前
投稿: 85
Topic starter  

追記

C**Dlg.cpp内のトップでインクルードしている自作ヘッダファイルには
以下の内容が記述されています.

//□□□□□□□□□□□□□□□□ここから

/************************************************************
/ << 行列 および ベクトルを動的生成する関数群 >>
/
/ double型行列
/ DMatrix a;
//行列の宣言
/ a=matrix_new((int) row,(int) col); //行列の生成
/ matrix_del(a);
//行列の解放
/
/ double型行
/ DVector a;
//宣言
/ a=vect_new((int) size);
//生成
/ vect_new(a);
//解放
/
/
/ int型行列
/ IMatrix a;
//宣言
/ a=intmatrix_new((int) row,(int) col); //生成
/ intmatrix_del(a);
//解放
/
/ int型行
/ IVector a;
//宣言
/ a=intvect_new((int) size); //生成
/ intvect_del(a);
//解放
/
/
/
/
/
/
**************************************************************/

typedef double **DMatrix;
typedef double *DVector;
typedef int **IMatrix;
typedef int *IVector;

//行列の動的生成
DMatrix matrix_new(int row, int col){
int i;
DMatrix a=new double *[row+1];
forto(i,0,row)
a[i]=new double [col];
a[row]=0;
return a;
}

//行列の解放
void matrix_del(DMatrix a){
DMatrix b=a;
while(*b!=0)
delete [] *b++;
delete [] a;
}

//行列の動的生成
IMatrix intmatrix_new(int row, int col){
int i;
IMatrix a=new int *[row+1];
forto(i,0,row)
a[i]=new int [col];
a[row]=0;
return a;
}

//行列の解放
void intmatrix_del(IMatrix a){
IMatrix b=a;
while(*b!=0)
delete [] *b++;
delete [] a;
}

// ベクトルの動的作成
IVector intvect_new(int size)
{
IVector x = new int[size];

return x;
}

// ベクトルの解放
void intvect_del( IVector x)
{
delete [] x;
}

// ベクトルの動的作成
DVector vect_new(int size)
{
DVector x = new double[size];

return x;
}

// ベクトルの解放
void vect_del( DVector x)
{
delete [] x;
}

//□□□□□□□□□□□□□□□□ここまで


返信引用
merlo
 merlo
(@merlo)
ゲスト
結合: 23年前
投稿: 85
Topic starter  

10.VCでのnew,deleteのリンクエラー
nafxcwd.lib(afxmem.obj) : error LNK2005: void * __cdecl operator new
(unsignedint) (??2@YAPAXI@Z) already defined in LIBCMTD.lib(new.obj)
が出たら

プロジェクト→設定→LINKタブのObject/Library modulesに nafxcwd.lib Libcmtd.lib を
入れてみる(要はリンクの順番を変えてみる)

という記事を見つけたのですが,リンクの順番を入れ替えろといわれても,
入れ替えるものがありません.

LINK2005に関して,いろいろ調べたのですが,僕の場合は

Hist.obj : error LNK2005: void __cdecl vect_del(double *) (?
vect_del@@YAXPAN@Z) はすでに CG.obj で定義されています

という風に,オブジェクトの名前が最初に出てきます.

libとかobjとかっていうファイルを今まで一度も考えたことも
いじったことも利用したこともないので・・・これが原因でないと思うのですが
早とちりでしょうか.

僕としては,やはりNEW DELETE演算子が悪さをしているような
気がします


返信引用
merlo
 merlo
(@merlo)
ゲスト
結合: 23年前
投稿: 85
Topic starter  

ヘッダファイルの二重インクルードはチェックしましたが
ありませんでした

ホント,なきそうです.


返信引用
merlo
 merlo
(@merlo)
ゲスト
結合: 23年前
投稿: 85
Topic starter  

はぁ 二時間四十分かけて
ようやく直りました

原因は,ヘッダファイルに別の自作ヘッダファイルを
インクルードしていることでした.

どうやら,二重インクルードしてたみたいです.

はぁ 僕の二時間四十分・・・

誰か,一言でいいから,こんな僕に人生のアドバイスを.


返信引用
TAD
 TAD
(@TAD)
ゲスト
結合: 23年前
投稿: 54
 

プログラミングをしていると、ちょっとしたミスに気付かず、バグフィックスに時間を費やすこ
とがあります。
merlo さんは、二時間四十分悩んだそうですが、数時間で解決できたのですから、良いほうで
しょう。私なんか、過去には、2,3日悩み続けたこともあります。
すぐにミスに気付かなかったことよりも、自分一人でで解決できたことを誉めていいと思います
よ。


返信引用
あ
 あ
(@あ)
ゲスト
結合: 23年前
投稿: 47
 

二重インクルード防止のお供に

#ifndef (テキトーな識別子)
#define (テキトーな識別子)

#endif


返信引用
merlo
 merlo
(@merlo)
ゲスト
結合: 23年前
投稿: 85
Topic starter  

(T_T)

TADさん,あさん.

ありがとうございます.
さっきまで仮眠を取っていたので,
返事遅くなりました

がんばります

がんばっていこー
やぁーれるぅだけぇ~
がんばっていこぅぅ~ (BY PAMS)


返信引用
merlo
 merlo
(@merlo)
ゲスト
結合: 23年前
投稿: 85
Topic starter  

o(^-^)o


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました