Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/144.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 调用DLL';从类函数内部调用外部函数_C++_C_Dll_Dllexport - Fatal编程技术网

C++ 调用DLL';从类函数内部调用外部函数

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.cpp文件,其中包含Windows中的example.h。在example.h文件中,有一个函数声明为

   //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()。 请注意,SysStDelc><代码>是C++函数的调用约定,您应该使用<代码> 在您的h文件中,像这样声明您的函数

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完全相关。