我试图建立C语言编写的一个dll并且将被其它程序也用C写的不能阻止名称重整
在导入所以被定义的所有DLL是否导出功能。 dll “without __declspec(dllexport)”(故意)。我已经用一个导出部分定义了一个.def文件,并且我想要导出的函数的名称(未加密的名称)。
我正在使用vc71/vs2003来构建这个,而且我仍然遇到了重名(如果我在记事本中打开.lib,我可以看到)。也只是为了澄清,visual studio导致在C代码中的名称变形(我能找到的大多数资源都提到它只是C++的一个问题)。
我该如何防止这个名称被破坏?
更多信息:
的错位的名称的形式为“functionName @整数”,其中整数表示以字节为单位的参数大小(而不是有序)的。例如,
来自的.lib: _PrepareSeverResponse @ 8
函数声明中.H: 字符* PrepareSeverResponse(无符号整数*尺寸,握手* ws_handshake);
.DEF: EXPORTS PrepareSeverResponse
调用约定: __stdcall(/ GZ)
希望这是更清晰。
你的意思是在C++的意义上(如神秘回答)有很多问号和其他符号的损坏名称?或者你的意思是因为它是_Name @ 16格式而受到损坏?您检查.lib,但.lib可能具有从名称到序号的映射。你应该使用walker来检查DLL,看看函数的名字是什么。发布您的.def文件也可能有所帮助。 – tinman
不要将.def文件内容和*确切*损坏的名称保密。 –
你的通话习惯是什么?它是'cdecl'吗? –