Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在托管C++项目中使用WCHARIGT时未解析的外部符号 我有一个C++项目,它的Unicode设置为字符集和/CLR选项,用于公共语言运行时支持。我使用多字节字符集的设置调用MFC dll的一些函数,并且在使用wchar\t的函数上遇到了一些类似的错误。相同的DLL是那些Unicode C++项目的工作文件,其中没有设置CLR选项,也就是说没有公共语言运行时支持。我在谷歌上做了一些尝试,比如:- 用std:string替换Cstring,但两者都给出相同的错误。_C++_Mfc_C++ Cli_Wchar T - Fatal编程技术网

在托管C++项目中使用WCHARIGT时未解析的外部符号 我有一个C++项目,它的Unicode设置为字符集和/CLR选项,用于公共语言运行时支持。我使用多字节字符集的设置调用MFC dll的一些函数,并且在使用wchar\t的函数上遇到了一些类似的错误。相同的DLL是那些Unicode C++项目的工作文件,其中没有设置CLR选项,也就是说没有公共语言运行时支持。我在谷歌上做了一些尝试,比如:- 用std:string替换Cstring,但两者都给出相同的错误。

在托管C++项目中使用WCHARIGT时未解析的外部符号 我有一个C++项目,它的Unicode设置为字符集和/CLR选项,用于公共语言运行时支持。我使用多字节字符集的设置调用MFC dll的一些函数,并且在使用wchar\t的函数上遇到了一些类似的错误。相同的DLL是那些Unicode C++项目的工作文件,其中没有设置CLR选项,也就是说没有公共语言运行时支持。我在谷歌上做了一些尝试,比如:- 用std:string替换Cstring,但两者都给出相同的错误。,c++,mfc,c++-cli,wchar-t,C++,Mfc,C++ Cli,Wchar T,std:string的示例:- 错误LNK2001:未解析的外部符号公共:\ uu thiscall CEventLog::CEventLogwchar\u t const*??0EventLog@@QAE@PB_W@Z 对于Cstring:- 错误LNK2019:未解析的外部符号公共:bool\uu thiscall CIITAdoField::GetValueclass ATL::CStringT>>& ?GetValue@CIITAdoField@@盖乌纳夫$CStringT@_WV?$S

std:string的示例:-

错误LNK2001:未解析的外部符号公共:\ uu thiscall CEventLog::CEventLogwchar\u t const*??0EventLog@@QAE@PB_W@Z

对于Cstring:-

错误LNK2019:未解析的外部符号公共:bool\uu thiscall CIITAdoField::GetValueclass ATL::CStringT>>& ?GetValue@CIITAdoField@@盖乌纳夫$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@ATL@@@@ATL@@@Z 在函数public:bool\uu thiscall中引用 Iit::DataFeedSvr::SpeedCache::CacheLoader>>,类 Iit::DataFeedSvr::SpeedCache::HolidayScheduleInfo,结构 Iit::DataFeedSvr::SpeedCache::HolidayScheduleSpeedCacheParam>

::重新加载类Iit::DataFeedSvr::SpeedCache::DoubleKeyCacheInstance>>,类 Iit::DataFeedSvr::SpeedCache::HolidayScheduleInfo,结构 Iit::DataFeedSvr::SpeedCache::HolidayScheduleSpeedCacheParam>&,类 CIITAdoRecordset&枚举 Iit::DataFeedSvr::SpeedCache::ERefreshType,类 Iit::DataFeedSvr::SpeedCache::CacheObserver常量* ?重新加载@$CacheLoader@V?$DoubleKeyCacheInstance@JV?$CStringT@_WV?$StrTraitMFC_DLL@_WV?$ChTraitsCRT@_W@地图集地图集@@VHolidayScheduleInfo@SpeedCache@DataFeedSvr@Iit@@UHolidayScheduleSpeedCacheParam@456@@SpeedCache@DataFeedSvr@Iit@@@SpeedCache@DataFeedSvr@这是什么意思$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视为内置类型,它是文件。 我曾尝试使用uu declspecdllexport显式导出函数和类,但没有成功。 我无法将我的项目从unicode更改为多字节,或者无法更改/clr选项的设置,因为它开始出现其他错误。
请提出解决办法。提前感谢。

在外部DLL上执行“dumpbin”以查看导出的内容。如果您的CEventLog::CEventLog没有导出基于字符的构造函数,您将无法导入它,就这么简单


从您的示例来看,/clr开关并不是问题的根源。尝试在没有CLR的情况下创建一个全新的Unicode项目,只是为了检查您是否真的可以链接到外部DLL。

我从您身上看到的是错误,从客户端找不到ErrorLog构造函数定义。您是否在项目设置中提供了导入库的引用?是的。我已在项目设置中明确添加了所有库。我已完成dumbbin,似乎正在导出基于字符的构造函数。068 00000000未定义notype外部事件日志@@QAE@PBD@Z public:_thiscall CEventLog::CEventLogchar const*。如果我错了,请纠正我。然而,还有一件事,当我在其他项目中使用相同的dll时,除了/clr选项外,其他项目的设置都是相同的,这就是为什么我怀疑这个开关。是的,构造函数只接受字符。您使用的是std::string还是std::wstring?即使使用Unicode编译的std::string也将使用字符而不是wchar\t。