DLL问题,编译错误如下:
我在将一个MFC AppWizard生成的Regular DLL with MFC Staticly Library
转换成一个Win32 DLL时遇到的问题:(主要是想导出一个类,而我不知道MFC AppWizard 生成的DLL能不能导出类,所以只有将其先转换成Win32 DLL再导出类)
编译错误如下:
nafxcwd.lib(dllmodul.obj) : error LNK2005: _DllMain@12 already defined in ryedll.obj
帮个忙,拜托。
问题点数:100、回复次数:7Top
1 楼Koshima(RedApple)回复于 2002-06-17 11:52:21 得分 0
还有一个警告如下:
nafxcwd.lib(dllmodul.obj) : warning LNK4006: _DllMain@12 already defined in ryedll.obj; second definition ignored
Creating library Debug/ryedll.lib and object Debug/ryedll.expTop
2 楼Koshima(RedApple)回复于 2002-06-17 11:54:24 得分 0
那位大虾给一个MFC AppWizard/Regular DLL with MFC Staticly Library
到出一个类的例子也成。
谢谢!
Top
3 楼qindq(蜕叟)回复于 2002-06-17 11:54:51 得分 100
Project setting对话框中 设成 Not using MFC;
Top
4 楼Koshima(RedApple)回复于 2002-06-17 12:08:34 得分 0
to qindq,
不行,我代码里面用了MFC的一些类,所以不能这样做。Top
5 楼qindq(蜕叟)回复于 2002-06-17 12:31:03 得分 0
你不是说"转换成一个Win32 DLL"吗?
如果不是就把DllMain废了吧。还原成YourApp::InitInstance()和YourApp::ExitInstance()的写法。仍然是MFC的DLL!!!!不过不影响你的def文件输出函数定义。
Top
6 楼Koshima(RedApple)回复于 2002-06-17 12:41:47 得分 0
qindq,谢谢!高定了。这一百分全部给你。
Top
7 楼arpoul(笼中鸟)回复于 2002-06-17 13:15:09 得分 0
先不忙结贴,我没看明白,如何调用你导出的类?Top
8 楼qindq(蜕叟)回复于 2002-06-18 10:51:24 得分 0
如果是纯动态Dll(使用LoadLibrary),没有办法调用导出的类(有办法,但是你必须剖析VC的符号编译结果,我没做过),只能调用函数。
如果是借助import library,好办:
#ifdef __IN_MY_DLL // Dll使用的定义
# define DECLSPECIFIER __declspec(dllexport)
#else // 调用者Exe使用的定义
# define DECLSPECIFIER __declspec(dllimport)
#endif
class DECLSPECIFIER MyExportableClass
{
...
};
Top




