我有一个.dll
,我怀疑使用了__stdcall
函数,但是完全未修饰的名称(甚至没有下划线或@
符号)。我为它编写了一个 .def
文件,其别名如下
func1 = func1
func1@4 = func1
但我认为 lib
(我用来从 .def
文件创建导入库)忽略了别名(链接器仍然显示 func1 @4
未定义)
如何创建将 func1@4
映射到 func1
的导入库?
最佳答案
我不知道是否可以使用lib.exe
创建正确的.lib
文件,所以我建议创建一个带有原始导出函数 stub 的DLL DLL。
示例dll.cpp
文件:
void __stdcall foo(int) {}
dll.def
文件:
EXPORTS
foo=foo
然后从 IDE 或命令行编译它:
cl dll.cpp /link /dll /def:dll.def /noentry
它将创建正确的 dll.lib
文件,因此您可以将其与如下代码一起使用:
void __stdcall foo(int);
#pragma comment(lib, "dll")
int main()
{
foo(42);
}
关于windows - __stdcall 没有任何修饰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9870562/