DLL导出函数的困惑
ljyit 2010-08-11 11:34:58
问题:
1:DLL导出函数该用哪种调用约定?
大部分看到的都是WINAPI,也就是__stdcall,但好像用__cdecl也能导出,用起来好像也没发现问题
这两种约定,无非就是谁负责清理栈的问题,理论上,如果导出的dll函数调用约定不一致,调用时就会产生栈不一至的问题,可我在实际用时默认都是__cdecl,好像也没发现异常
2.该使用def文件定义导出函数,还是使用 extern "C" __declspec (dllexport) 定义导出函数?
使用def文件定义导出函数的好处是使名字绝对正确
而使用extern "C" __declspec (dllexport)定义导出函数时,如果是__stdcall调用约定,导出函数名前面会被加上下画线,如果要保证函数是__stdcall,而且名字又不被修改,难道只能使用def文件?