CString导致使用Dll动态库无法编译的问题
2012-07-19 23:09
561 查看
今天编译popo库,它用的是 Use MFC in a Shared DLL, 编译后的结果为Dll,我自己有一个客户端工程,要使用该Dll,它使用MFC时Use MFC in a Static Library,结果老是编译不过去,报错如下
1>PoPoTest.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall popo::ui::CSkinObject::SetObjectID(class ATL::CStringT<wchar_t,class StrTraitMFC<wchar_t,class ATL::ChTraitsCRT<wchar_t> > >)" (__imp_?SetObjectID@CSkinObject@ui@popo@@QAEXV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z)
referenced in function "public: virtual int __thiscall CPoPoTestApp::InitInstance(void)" (?InitInstance@CPoPoTestApp@@UAEHXZ)
通过objdump /t看了下,结果存在一个这样的符号,
__imp_?SetObjectID@CSkinObject@ui@popo@@QAEXV?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z
猜测是CString的第二个模板实参的问题,在头文件中把
修改为
在使用的地方按照该方式使用,
好了,可以编译了。
但是不知道这样的话会不会出问题,翻了下代码,也没看出来
有什么区别,请大牛们指正。
1>PoPoTest.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __thiscall popo::ui::CSkinObject::SetObjectID(class ATL::CStringT<wchar_t,class StrTraitMFC<wchar_t,class ATL::ChTraitsCRT<wchar_t> > >)" (__imp_?SetObjectID@CSkinObject@ui@popo@@QAEXV?$CStringT@_WV?$StrTraitMFC@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z)
referenced in function "public: virtual int __thiscall CPoPoTestApp::InitInstance(void)" (?InitInstance@CPoPoTestApp@@UAEHXZ)
通过objdump /t看了下,结果存在一个这样的符号,
__imp_?SetObjectID@CSkinObject@ui@popo@@QAEXV?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z
猜测是CString的第二个模板实参的问题,在头文件中把
void SetObjectID(const CString sID);
修改为
void SetObjectID(const CStringT<TCHAR, StrTraitMFC_DLL<TCHAR, ChTraitsCRT<TCHAR> > > sID);
在使用的地方按照该方式使用,
CStringT<TCHAR, StrTraitMFC_DLL<TCHAR, ChTraitsCRT<TCHAR> > > csId(_T("MainForm")); pMainForm->SetObjectID(csId);
好了,可以编译了。
但是不知道这样的话会不会出问题,翻了下代码,也没看出来
StrTraitMFC_DLL和
StrTrait_DLL
有什么区别,请大牛们指正。
相关文章推荐
- C#动态编译无法找到 Dll问题.CompilerParameters error CS0006:
- 提问:关于动态编译WebService为dll然后调用WebService的问题,无法返回xml文本
- 探讨:关于动态编译WebService为dll然后调用WebService的问题,无法返回xml文本
- windows下Sublime Text2安装Emmet后因为pyV8无法加载导致Emmet无法使用的问题
- VC6.0编译DLL,使用VS2010调用问题及解决方法
- (原创)解决NIOS 11.0使用友晶示例程序无法编译的问题
- 电脑优化导致打印机无法使用的问题
- ASP.NET的信任级别导致个别DLl无法运行的问题.
- 因为前缀索引问题导致mysql无法使用覆盖索引
- stdafx.h前使用预编译指令导致的fatal error C1020: unexpected #endif问题
- 关于HAL.DLL文件丢失导致系统无法启动的问题
- 使用Jrtplib编译的arm程序和pc无法通信的问题
- .NET----使用母版页后,控件名称自动生成导致js无法正常操作.net控件的问题
- 升级Linux内核导致vmware无法使用(vmnet模块无法编译)解决方案
- CSC动态编译,监测文件夹下改变(Windows服务形式),自动编译生成dll供web项目使用
- 解决“无法定位序数***于动态链接库iertutil.dll上”的问题
- 解决“无法定位程序输入点ucrtbase.terminate于动态链接库api-ms-win-crt-runtime-|1-1-0.dll“问题
- 使用 VS2010 开发 MapXtreme2008 遇到的问题 无法复制文件“C:\Program Files\Common Files\MapInfo\MapXtreme\7.0.0\Compiler.DLL”,原因是找不到该文件
- 如何解决烦人的VS.NET2003编译时“无法将程序集复制到文件,另一个程序正在使用,进程无法访问”的问题?
- VC中使用Matlab Engine出现"无法找到libeng.dll"的问题