英文:
Renaming DLL functions?
问题
有没有办法让我为我的导出 DLL 函数命名?当我使用 DLL 导出查看器时,显示的函数名称是完整的声明。我想使用 JNA(JNI)来访问 DLL 内部的函数,而函数名称需要是函数名,而不是完整的声明。如果这是重复的,请指出来!
英文:
Is there a way for me to name my exported dll functions? When I use a dll export viewer the function names shown are the full declarations. I would like to use the JNA (JNI) to access functions inside the DLL, and the function names need to be a function name not a full declaration. If this is a duplicate please point it out!
答案1
得分: 2
可以实际上只使用__declspec(dllexport)
语法来完成(也就是说,不需要.def
文件),如果你将函数声明为extern "C"(或者在C文件中实现它而不是C++)。
extern "C"
{
__declspec(dllexport) void __stdcall MyFunc(std::string &);
}
通常比导出带有别名的名字(因为你需要追踪找到被混淆的名字,以便为其分配一个别名)要简单得多。
英文:
It can actually be done with just the __declspec(dllexport) syntax (that is, without a .def file) if you declare the function as extern "C" (or implement it in a C file instead of C++).
extern "C"
{
__declspec(dllexport) void __stdcall MyFunc(std::string &);
}
Generally much easier than exporting a mangled name with an alias (as you then need to track down the mangled name in order to assign an alias).
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论