最佳答案
我想要一个从 C + + WindowsDLL 导出函数的简单示例。
我想看看头文件、 .cpp
文件和 .def
文件(如果绝对需要的话)。
I'd like the exported name to be 未经装饰. I'd like to use the most standard calling convention (__stdcall
?). I'd like the use __declspec(dllexport)
and not have to use a .def
file.
例如:
//header
extern "C"
{
__declspec(dllexport) int __stdcall foo(long bar);
}
//cpp
int __stdcall foo(long bar)
{
return 0;
}
我试图避免链接器添加下划线和/或数字(字节计数?)的名称。
我不支持 dllimport
和 dllexport
使用相同的头。我不想要任何关于导出 C + + 类方法的信息,只想要 c 样式的全局函数。
更新
不包括调用约定(并使用 extern "C"
)给出了我喜欢的导出名称,但这意味着什么呢?是否有默认的调用约定,我得到的是 pcall (。NET) ,声明(vb6)和 GetProcAddress
会期望?(我想对于 GetProcAddress
来说,这取决于调用者创建的函数指针)。
我希望这个 DLL 没有头文件使用,所以我真的不需要很多花哨的 #defines
,使头可用的调用者。
我可以接受的答案是,我必须使用 *.def
文件。