You can declare C++ classes with the dllimport or dllexport attribute. These forms imply that the entire class is imported or exported. Classes exported this way are called exportable classes.The following example defines an exportable class. All its member functions and static data are exported:#define DllExport __declspec( dllexport )class DllExport C { int i; virtual int func( void ) { return 1; } }; Note that explicit use of the dllimport and dllexport attributes on members of an exportable class is prohibited.
{
int i;
virtual int func( void )
{ return 1; }
};
Note that explicit use of the dllimport and dllexport attributes on members of an exportable class is prohibited.
class CYourClass
{
..............
.............. }
定义一个用于导出类对象的函数
extern "C" __declspec( dllexport ) CYourClasss* GetObject()
{
return new CYourClasss();
}
在exe中调用这个函数就可以得到类对象了。
class CYourClass
{
..............
.............. }
定义一个用于导出类对象的函数
extern "C" __declspec( dllexport ) CYourClasss* GetObject()
{
return new CYourClasss();
}
在exe中调用这个函数就可以得到类对象了。
如果这样的话,是不是还要先把CYourClass声明一下?
class __declspec(dllexport) CMyClass:导出对象。__declspec(dllexport) CMyClass MyObject:在exe中调用这个调数当然要行声明CMyClass。
就是这末做的,我当时觉得这种方法比较苯,但不知道还有什末其他方法!
class __declspec(dllexport) CMyClass:导出对象。__declspec(dllexport) CMyClass MyObject:
yndfcd(YNDFCD)你好, 请问这算不算是声明?我想把dll中的一个类作为exe某一个类中声明变量用是不是必须要知道dll的头文件?我不想在编译的时侯用dll生成的lib文件,怎么办?
如果是导出对象的话。
可以不用链接lib.用LoadLibrary加载dll,然后用GetProcAddress得到这个对象的指针。
class CYourClass
{
..............
.............. }
定义一个用于导出类对象的函数
extern "C" __declspec( dllexport ) CYourClasss* GetObject()
{
return new CYourClasss();
}
在exe中调用这个函数就可以得到类对象了。
在dll中定义一个类
class CYourClass
{
..............
.............. }
定义一个用于导出类对象的函数
extern "C" __declspec( dllexport ) CYourClasss* GetObject()
{
return new CYourClasss();
}
在exe中调用这个函数就可以得到类对象了。这个啊,那怎么 delete 呢?