重新问一个老问题:先谢谢大家了。我建了一个静态库myLIB.lib,其中使用了MFC。
在一个GUI模式的程序中引用myLIB.lib,编译,链接,运行,一切都正常。
在一个CONSOLE模式的控制台程序中引用myLIB.lib,编译通过,链接出错:
nafxcwd.lib(afxmem.obj) : error LNK2005: "public: static void __stdcall CObject::operator delete(void *)" (??3CObject@@SGXPAX@Z) already defined in MyLIB.lib(ChatServer.obj)
在project setting中ignore library中指定忽略nafxcwd.lib等,没用。
本控制台程序并未使用MFC。是myLIB的头文件中引用了MFC。
我想办法在myLIB.h中去掉所有关于MFC的头文件。再去掉一个HWND变量的定义,然后控制台程序就可正常编译,链接,运行。可实现GUI程序里大部分功能。
但如果去掉了这个HWND变量会使我的静态库损失一个重要功能。
加上HWND变量,我的静态态库myLIB.lib编译出错,指出HWND未定义。
若加windows.h就指出MFC与windows.h不可共存。 what the $#%^#%#$%^#$%
将HWND定义为LONG,也出错。
不能加AFX.H,不能加WINDOWS.H,那么我要到哪里去找这个该死的HWND的定义?它的定义在哪个H文件中?
在一个GUI模式的程序中引用myLIB.lib,编译,链接,运行,一切都正常。
在一个CONSOLE模式的控制台程序中引用myLIB.lib,编译通过,链接出错:
nafxcwd.lib(afxmem.obj) : error LNK2005: "public: static void __stdcall CObject::operator delete(void *)" (??3CObject@@SGXPAX@Z) already defined in MyLIB.lib(ChatServer.obj)
在project setting中ignore library中指定忽略nafxcwd.lib等,没用。
本控制台程序并未使用MFC。是myLIB的头文件中引用了MFC。
我想办法在myLIB.h中去掉所有关于MFC的头文件。再去掉一个HWND变量的定义,然后控制台程序就可正常编译,链接,运行。可实现GUI程序里大部分功能。
但如果去掉了这个HWND变量会使我的静态库损失一个重要功能。
加上HWND变量,我的静态态库myLIB.lib编译出错,指出HWND未定义。
若加windows.h就指出MFC与windows.h不可共存。 what the $#%^#%#$%^#$%
将HWND定义为LONG,也出错。
不能加AFX.H,不能加WINDOWS.H,那么我要到哪里去找这个该死的HWND的定义?它的定义在哪个H文件中?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货