visualc&x2B+;2015年不产生任何领先的“市场”_&引用; 我现在创建DLL很长时间了,但是我对我的新项目中出现的一个问题感到好奇,第一个代码是 VS C++ 2015
但是我的应用程序加载dll失败,因为visualc&x2B+;2015年不产生任何领先的“市场”_&引用; 我现在创建DLL很长时间了,但是我对我的新项目中出现的一个问题感到好奇,第一个代码是 VS C++ 2015,c++,dllexport,name-decoration,C++,Dllexport,Name Decoration,但是我的应用程序加载dll失败,因为找不到\u foo()。使用Dependency Walker检查dll时,会显示已导出foo(),但没有强制的前导\uuu 我找不到编译器/链接器选项对导出函数名的创建有影响。您试图将函数导出为,但实际上没有将它们标记为。这可能会导致堆栈损坏检查#pragma注释(链接器,“/EXPORT:…”,例如,此处:@madsciient OP最好确保使用正确的调用约定导出其函数,\uu stdcall前缀为\uu未能使用正确的约定可能并将导致堆栈损坏和未定义的行为
找不到\u foo()
。使用Dependency Walker检查dll时,会显示已导出foo()
,但没有强制的前导\uuu
我找不到编译器/链接器选项对导出函数名的创建有影响。您试图将函数导出为,但实际上没有将它们标记为。这可能会导致堆栈损坏检查
#pragma注释(链接器,“/EXPORT:…”
,例如,此处:@madsciient OP最好确保使用正确的调用约定导出其函数,\uu stdcall
前缀为\uu
未能使用正确的约定可能并将导致堆栈损坏和未定义的行为。多亏了这一点,我的问题得到了妥善解决。我以前的编译器(Embarcadero似乎也没有使用“uu stdcall”)来实现它。现在我的语句看起来是这样的:extern“C”_declspec(dllexport)void u stdcall foo();在“依赖步行者”中,我现在可以看到“_foo@0,所以我缺少了“”,但为什么我认为“@0”是参数的字节长度(这里没有)?Embarcadero只是用相同的来源创建了“_foo”。
extern "C" void __declspec(dllexport) foo();