Visual c++ 如何从stdcall约定中的代码调用cdecl约定中的函数

Visual c++ 如何从stdcall约定中的代码调用cdecl约定中的函数,visual-c++,Visual C++,我在cdecl调用约定中有一个vc++dll。我想使用从_stdcall调用约定中的代码导出的dll函数。我得到了预期的链接器错误。但是我该怎么做呢。如果没有stdcall DLL的源,可以动态加载并在函数指针上指定调用约定,否则将使用项目设置。不要这样做: BOOL (*pBeep)(UINT) = 0; // defaults to project calling convention setting (/Gd etc) 如果您的项目设置为默认的u cdecl,那么您实际上希望显式地将函数

我在cdecl调用约定中有一个vc++dll。我想使用从_stdcall调用约定中的代码导出的dll函数。我得到了预期的链接器错误。但是我该怎么做呢。

如果没有stdcall DLL的源,可以动态加载并在函数指针上指定调用约定,否则将使用项目设置。不要这样做:

BOOL (*pBeep)(UINT) = 0; // defaults to project calling convention setting (/Gd etc)
如果您的项目设置为默认的u cdecl,那么您实际上希望显式地将函数指针设置为u stdcall:

BOOL (__stdcall *pBeep)(UINT) = 0;
指定函数指针时,请确保正确强制转换:

pBeep = (BOOL (__stdcall *)(UINT))GetProcAddress(beepLibrary, "MessageBeep");

右键单击project go to properties->Linker->input->additional dependency在此字段中写入dll并应用ok。在函数原型的标题中明确指定调用约定(使用
\uuuuuu cdecl
关键字),编译代码包括。