我有一个 C++ 项目,其中 Unicode 设置为字符集,/clr 选项用于公共语言运行时支持。我正在调用 MFC dll 的某些函数(设置多字节字符集),并且在使用 wchar_t 的那些函数上遇到了一些喜欢的错误。相同的 dll 是那些未设置 /clr 选项(即没有公共语言运行时支持)的 unicode c++ 项目的工作文件。我已经完成了谷歌并尝试了一些类似的东西: -
- 用 std:string 替换 Cstring 但两者都给出相同的错误。
标准示例:字符串:--
错误 LNK2001:未解析的外部符号“公共:__thiscall CEventLog::CEventLog(wchar_t const *)”(??0CEventLog@@QAE@PB_W@Z)
对于 Cstring:--
error LNK2019: unresolved external symbol "public: bool __thiscall CIITAdoField::GetValue(class ATL::CStringT > > &)" (?GetValue@CIITAdoField@@QAE_NAAV?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@@Z) referenced in function "public: bool __thiscall Iit::DataFeedSvr::SpeedCache::CacheLoader > >,class Iit::DataFeedSvr::SpeedCache::HolidayScheduleInfo,struct Iit::DataFeedSvr::SpeedCache::HolidayScheduleSpeedCacheParam>
::Reload(class Iit::DataFeedSvr::SpeedCache::DoubleKeyCacheInstance > >,class Iit::DataFeedSvr::SpeedCache::HolidayScheduleInfo,struct Iit::DataFeedSvr::SpeedCache::HolidayScheduleSpeedCacheParam> &,class CIITAdoRecordset &,enum Iit ::DataFeedSvr::SpeedCache::ERefreshType,class Iit::DataFeedSvr::SpeedCache::CacheObserver const *)"(?Reload@?$CacheLoader@V?$DoubleKeyCacheInstance@JV?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@VHolidayScheduleInfo@SpeedCache@DataFeedSvr@Iit@@UHolidayScheduleSpeedCacheParam@ 456@@SpeedCache@DataFeedSvr@Iit@@@SpeedCache@DataFeedSvr@Iit@@QAE_NAAV?$DoubleKeyCacheInstance@JV?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@ATL@@@@@ATL@@VHolidayScheduleInfo @SpeedCache@DataFeedSvr@Iit@@UHolidayScheduleSpeedCacheParam@456@@234@AAVCIITAdoRecordset@@W4ERefreshType@234@PBVCacheObserver@234@@Z)
- 我已经检查了“将 Wchar_t 视为内置类型”之类的设置,它是文件。
- 我曾尝试使用显式导出函数和类,
__declspec(dllexport)
但没有运气。 - 我无法将我的项目从 unicode 更改为多字节,或者无法更改 /clr 选项的设置,因为它开始出现其他错误。
请提出解决方案。提前致谢。