我在 MSVC2010 中有一段 C++ 代码,它创建了一个 DLL 包装器。代码部分看起来像这样......
extern "C" __declspec(dllexport) DWORD myDllExportFunction()
{
return (DWORD)SomeFunction(SomeParameter);
}
或者...
_declspec(dllexport) int64 _stdcall myDllExportFunction2(<someType> someParameter){
{
return new (DWORD)SomeExternalFunction(SomeParameter);
}
我希望我的导出部分在这个 dll 上做一个 dumpbin 只包含完全限定的函数名,但它看起来更像这样。
_myDllExportFunction@12 = _myDllExportFunction@12
我不知道为什么有这个等号或它意味着什么。我有一种强烈的感觉,即导入 dll 的程序无法访问该功能,因为它没有做它应该做的事情。
为了提供足够的信息,我已经包含了一些编译器和链接器开关
编译器选项:
/Zi /nologo /Wall /WX- /O2 /Ob2 /Oi /Oy- /D "_WINDLL" /D "_MBCS" /D "_AFXDLL" /Gm- /EHsc /GS /fp:precise /Zc:wchar_t /Zc
链接器选项:
/MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB:"C:\....\MyProj.pdb" /SUBSYSTEM:CONSOLE /OPT:REF /OPT:ICF /PGD:"C:\....\MyProj.pgd" /TLBID:1 /DYNAMICBASE:NO /NXCOMPAT:NO /IMPLIB:"MyProj.lib" /MACHINE:X86 /ERRORREPORT:QUEUE
注意:/IMPLIB:"MyProj.lib" -> 这个导入库包含我希望在我的 DLL 中具有的所有导出,其格式是我希望它们在 dll 中的格式。
我的项目选项中是否有任何设置会导致这种情况?在过去几年中,dllexport 是否有任何我可能错过的变化?有什么我可以提供给你的信息来帮助你理解我的问题吗?