我有一个C ++项目,其中Unicode设置为字符集,而/ clr选项用于公共语言运行时支持。我正在调用MFC DLL的一些功能(设置MultiByte字符集),我在使用wchar_t的那些函数上得到了一些喜欢的错误。相同的dll是那些未设置/ clr选项的unicode c ++项目的工作文件(即没有公共语言运行时支持)。我做了谷歌并尝试了一些事情: -
std:string的示例: -
错误LNK2001:未解析的外部符号“public:__ thishisall CEventLog :: CEventLog(wchar_t const *)“(?? 0CEventLog @@ QAE @ PB_W @ Z)
for Cstring: -
错误LNK2019:未解析的外部符号“public:bool __thiscall CIITAdoField :: GetValue(类ATL :: CStringT>>&)“ (?@的GetValue @@ CIITAdoField QAE_NAAV?$ @ CStringT _WV?$ @ StrTraitMFC_DLL _WV?$ @ ChTraitsCRT @ _W ATL @@@@@ ATL @@@ Z) 在函数“public:bool __thiscall中引用 Iit :: DataFeedSvr :: SpeedCache :: CacheLoader> >,类 IIT :: DataFeedSvr :: SpeedCache :: HolidayScheduleInfo,结构 IIT :: DataFeedSvr :: SpeedCache :: HolidayScheduleSpeedCacheParam>
:: Reload(类Iit :: DataFeedSvr :: SpeedCache :: DoubleKeyCacheInstance>>,类 IIT :: DataFeedSvr :: SpeedCache :: HolidayScheduleInfo,结构 IIT :: DataFeedSvr :: SpeedCache :: HolidayScheduleSpeedCacheParam> &安培;,类 CIITAdoRecordset& enum IIT :: DataFeedSvr :: SpeedCache :: ERefreshType,类 Iit :: DataFeedSvr :: SpeedCache :: CacheObserver const *)“ (?重载@?$ @缓存加载V'$ @ DoubleKeyCacheInstance JV?$ @ CStringT _WV?$ @ StrTraitMFC_DLL _WV?$ @ ChTraitsCRT @ _W ATL @@@@@ ATL @@ VHolidayScheduleInfo @ SpeedCache @ DataFeedSvr @本品系@@ UHolidayScheduleSpeedCacheParam @ 456 @@ SpeedCache @ DataFeedSvr @本品系@@@ SpeedCache @ DataFeedSvr @本品系@@ QAE_NAAV?$ @ DoubleKeyCacheInstance JV?$ @ CStringT _WV?$ @ StrTraitMFC_DLL _WV?$ @ ChTraitsCRT @ _W ATL @@@@@ ATL @@ VHolidayScheduleInfo @ SpeedCache @ DataFeedSvr @ @@本品系@ UHolidayScheduleSpeedCacheParam 456 @@ @ 234 @@ AAVCIITAdoRecordset @ W4ERefreshType 234 @ PBVCacheObserver @ 234 @@ Z)
__declspec(dllexport)
显式导出函数和类,但没有运气。请建议解决方案。提前谢谢。
答案 0 :(得分:-1)
在外部DLL上执行'dumpbin'以查看导出的内容。如果你的CEventLog :: CEventLog没有导出基于字符的构造函数,你将无法导入它,就像那样简单。
从您的示例中看,/ clr开关没有导致问题。尝试创建一个全新的Unicode项目(没有CLR)只是为了检查你真的可以链接到外部DLL。