关于error LNK2005: _DllGetClassObject@12 已经在 dll208test.obj 中定义的有关问题
关于error LNK2005: _DllGetClassObject@12 已经在 dll208test.obj 中定义的问题?
vc2008中,创建了一个mfc的dll
在共享 DLL 中使用 MFC
配置->性性->常规中选择:公共语言运行库支持(/clr)
然后添加Web引用,加入了一个WebService地址,加进后来
Debug编译,通过
Release编译,就出现如下情况:
正在链接...
mfcs90u.lib(oleexp.obj) : error LNK2005: _DllGetClassObject@12 已经在 dll208test.obj 中定义
mfcs90u.lib(oleexp.obj) : error LNK2005: _DllCanUnloadNow@0 已经在 dll208test.obj 中定义
郁闷,上网查了半天也搞不定
参考这个网址:http://support.microsoft.com/kb/962924
但是代码实际都有AFX_MANAGE_STATE(AfxGetStaticModuleState()) ;
代码如下:
// DllGetClassObject - 返回类工厂
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
return AfxDllGetClassObject(rclsid, riid, ppv);
}
// DllCanUnloadNow - 允许 COM 卸载 DLL
STDAPI DllCanUnloadNow(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
return AfxDllCanUnloadNow();
}
哪位大狭碰到过这样的情况呢?
vc2008,创建这样的工程,还非得“在共享 DLL 中使用 MFC”
在"在静态库中使用 MFC"就出现如下情况:
正在编译...
cl: 命令行 error D8016 :“/MTd”和“/clr”命令行选项不兼容
改成"多线程(/MT)","多线程调试 DLL (/MDd)"等都不行。
真是奇怪了。。。。。
------解决方案--------------------
你应该使用mfc扩展dll
------解决方案--------------------
在他们定义的头文件中用
vc2008中,创建了一个mfc的dll
在共享 DLL 中使用 MFC
配置->性性->常规中选择:公共语言运行库支持(/clr)
然后添加Web引用,加入了一个WebService地址,加进后来
Debug编译,通过
Release编译,就出现如下情况:
正在链接...
mfcs90u.lib(oleexp.obj) : error LNK2005: _DllGetClassObject@12 已经在 dll208test.obj 中定义
mfcs90u.lib(oleexp.obj) : error LNK2005: _DllCanUnloadNow@0 已经在 dll208test.obj 中定义
郁闷,上网查了半天也搞不定
参考这个网址:http://support.microsoft.com/kb/962924
但是代码实际都有AFX_MANAGE_STATE(AfxGetStaticModuleState()) ;
代码如下:
// DllGetClassObject - 返回类工厂
STDAPI DllGetClassObject(REFCLSID rclsid, REFIID riid, LPVOID* ppv)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
return AfxDllGetClassObject(rclsid, riid, ppv);
}
// DllCanUnloadNow - 允许 COM 卸载 DLL
STDAPI DllCanUnloadNow(void)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
return AfxDllCanUnloadNow();
}
哪位大狭碰到过这样的情况呢?
vc2008,创建这样的工程,还非得“在共享 DLL 中使用 MFC”
在"在静态库中使用 MFC"就出现如下情况:
正在编译...
cl: 命令行 error D8016 :“/MTd”和“/clr”命令行选项不兼容
改成"多线程(/MT)","多线程调试 DLL (/MDd)"等都不行。
真是奇怪了。。。。。
------解决方案--------------------
你应该使用mfc扩展dll
------解决方案--------------------
在他们定义的头文件中用
- C/C++ code
#progma once
------解决方案--------------------
- C/C++ code
#pragma once
------解决方案--------------------
看过了,但是真的没做过类似的东西
帮顶一下吧