スキップしてメイン コンテンツに移動

投稿

8月, 2007の投稿を表示しています

error LNK2005:

nafxcwd.lib(afxmem.obj) : error LNK2005: "void __cdecl operator delete(void *)" (??3@YAXPAX@Z) はすでに libcpmtd.lib(delop.obj) で定義されています nafxcwd.lib(afxmem.obj) : error LNK2005: "void * __cdecl operator new(unsigned int,int,char const *,int)" (??2@YAPAXIHPBDH@Z) はすでに LIBCMTD.lib(dbgnew.obj) で定義されています VC6.0でMFCプロジェクトでたまに出るリンカーエラー。 C ランタイム ライブラリを MFC ライブラリより先にリンクしたときでるらしい。 「プロジェクト」→「設定」→「リンク」から、カテゴリを「インプット」にして、「オブジェクト/ライブラリモジュール」に「Nafxcwd.lib Libcmtd.lib」、無視するライブラリに「Nafxcwd.lib Libcmtd.lib」とやれば解決。Nafxcwd.lib Libcmtd.libはDebug用のライブラリだから、リリース時には、「Nafxcw.lib Libcmt.lib」にしないとダメ。 この辺が参考になります。 http://frog.raindrop.jp/knowledge/archives/000503.html http://isobe.exblog.jp/3506901/ http://support.microsoft.com/default.aspx?scid=kb;ja;148652

テンプレートの発見

テンプレート関数って #include <stdio.h> template <typename _T> void hoge(_T a) { printf("hoge template %d \n", a); } void hoge(double a) { printf("hoge double %f \n", a); } int main() { int i = 1; double d = 2.0; char c = 3; hoge(i); hoge(d); hoge(c); return 0; } 実行結果 hoge template 1 hoge double 2.000000 hoge template 3 って具合に使えるみたい。 テンプレートの関数 VS. 型指定してる関数では、型指定してる関数がオーバーロードされちゃうんだ。