了解DLL的高手看下
求助 了解DLL的高手看下
我有两个类A和B , 其中A定义成抽象类, 现要做一DLL,DLL中从A中派生一个类 C, 定义一个导出函数GetC_Addr() 非C成员函数,作用是生成一个C的实例并把指针传出来。在另一个类B的构造函数中 做 A *pA ,调用GetC_Addr() 并把返回的指针pC赋给pA;
这样我在DLL中函数定义成这样 :extern "C " __declspec(dllexport)(C *) GetC_Addr() ;对么?
为什么我在编译时会出现d:\project\comportwrapdll\comportwrapdll.h(294) : error C2226: syntax error : unexpected type 'C '错误。
在B中的头文件该怎么定义 这个函数啊 我用静态调用的方法。B构造函数中 我用pA = GetC_Addr() , 怎么不对啊?
------解决方案--------------------
头文件包含了吗?
改成这样试试:
extern "C " __declspec(dllexport) C* GetC_Addr() ;//把括号去掉
------解决方案--------------------
B中一样得定义C class啊,可以包含A中的头文件,也可以重新定义
C* GetC_Addr()
{
C myClass ; //应该用new,否则对象出了函数,就无效了
return & myClass;
}
------解决方案--------------------
C要大写。。。
------解决方案--------------------
C* GetC_Addr()
{
C myClass ;
return & myClass;
}
变成返回临时变量地址了
=============
用 new 或者传个参数
唉,基本功不行啊。。。
我有两个类A和B , 其中A定义成抽象类, 现要做一DLL,DLL中从A中派生一个类 C, 定义一个导出函数GetC_Addr() 非C成员函数,作用是生成一个C的实例并把指针传出来。在另一个类B的构造函数中 做 A *pA ,调用GetC_Addr() 并把返回的指针pC赋给pA;
这样我在DLL中函数定义成这样 :extern "C " __declspec(dllexport)(C *) GetC_Addr() ;对么?
为什么我在编译时会出现d:\project\comportwrapdll\comportwrapdll.h(294) : error C2226: syntax error : unexpected type 'C '错误。
在B中的头文件该怎么定义 这个函数啊 我用静态调用的方法。B构造函数中 我用pA = GetC_Addr() , 怎么不对啊?
------解决方案--------------------
头文件包含了吗?
改成这样试试:
extern "C " __declspec(dllexport) C* GetC_Addr() ;//把括号去掉
------解决方案--------------------
B中一样得定义C class啊,可以包含A中的头文件,也可以重新定义
C* GetC_Addr()
{
C myClass ; //应该用new,否则对象出了函数,就无效了
return & myClass;
}
------解决方案--------------------
C要大写。。。
------解决方案--------------------
C* GetC_Addr()
{
C myClass ;
return & myClass;
}
变成返回临时变量地址了
=============
用 new 或者传个参数
唉,基本功不行啊。。。