C++ 调用DLL';从类函数内部调用外部函数
我有一个example.cpp文件,其中包含Windows中的example.h。在example.h文件中,有一个函数声明为C++ 调用DLL';从类函数内部调用外部函数,c++,c,dll,dllexport,C++,C,Dll,Dllexport,我有一个example.cpp文件,其中包含Windows中的example.h。在example.h文件中,有一个函数声明为 //example.h _EXTERN S16BIT _DECL function(); 该函数是从DLL外部生成的。在example.cpp文件中,我有一个类myclass,我想从类classfunc()so的成员函数调用function() //example.cpp class myclass{ public: classfu
//example.h
_EXTERN S16BIT _DECL function();
该函数是从DLL外部生成的。在example.cpp文件中,我有一个类myclass
,我想从类classfunc()
so的成员函数调用function()
//example.cpp
class myclass{
public:
classfunc(){
function();
}
}
它编译得很好,但当它运行时,会给我一个访问冲突异常。我知道这是错误的,但不知道解决办法
已编辑:_EXTERN定义为空
#define _EXTERN
_DECL定义为:
#define _DECL __stdcall
S16BIT 2字节似乎您希望从DLL调用/使用纯C函数function()。 请注意,
extern "C" __declspec( dllexport ) signed short function();
\u EXTERN
、S16BIT
和\u DECL
是什么意思?目前还不清楚。我们不知道宏扩展到什么。我们没有关于函数的规范。你必须更详细地了解……所有的事情。好的。函数实现在哪里?你的C++代码也是错误的。这不可能是真正的代码:classfunc没有指定返回类型。这没有帮助,也不准确。语言没有调用约定,说STDCLAK是C++调用约定是不必要的。dllexport是您在实现函数时所做的。@DavidHeffernan不要胡说八道,请尝试更具建设性。。。当我说C++约定时,我应该说“C++实例方法是如何被调用的”(我这里是指在RCX/ECX中传递这个约定的约定,以及在C中的一个代码中当然不相关的栈清理机制)。在控制DLL的情况下,他/她可以更改其原型,因此我提到了dllexport,而不是dllimportC++方法,可以使用任何调用约定调用。而且stdcall非常罕见。它通常用于互操作。注册调用约定fastcall可以在任何语言中使用。stdcall不使用寄存器,参数在堆栈上。烟囱清理与C完全相关。