在dll中导出函数

时间:2013-03-07 07:13:21

标签: c dll

我已经创建了一个dll并使用它导出了其中的函数 _declspec(dllexport)位于函数定义的最左侧。 喜欢:

_declspec(dllexport) void func1(char*p);

这是将函数导出到某个地方的正确方法吗?

我已阅读过关于_stdcall的信息:

_declspec(dllexport) void _stdcall func1(char*p);

_declspec(dllexport) void _cdecl func1(char*p); 

请解释这三者之间的区别,因为我很困惑。

2 个答案:

答案 0 :(得分:1)

您的第一个签名是正确的。第二和第三是如此。但是,_stdcall_cdecl是调用约定,它们在调用时指定参数的顺序以及调用时的其他一些事项。例如,'_thiscall'是另一个调用约定,这意味着this指针将在函数调用期间通过寄存器(ECX)传递。

因此,简而言之,这三项都有效,但三者都指明了如何进行通话的内部细节。

您可能需要阅读this article以了解有关通话约定的更多信息:

答案 1 :(得分:0)

你的所有声明都是正确的。重要的是,您为使用DLL的调用模块提供了适当的头文件。例如

之一
_declspec(dllimport) void func1(char*p);
_declspec(dllimport) void _stdcall func1(char*p);

_declspec(dllimport) void _cdecl func1(char*p);