如何用VC++在动态库导出一个类的构造函数
最近想用vc++写一个dll导出一个类中的几个重载构造函数,可是就是实现不了,exe在使用dll总会报错。
谁能给一个例子,有dll的实现,也有exe的简单调用的例子,先谢过!
[解决办法]
dll
#ifdef XX
class __declspec(dllexport) classname
#else
class __declspec(dllimport) classname
#endif
exe
#pragma comment(lib, "./Debug/name.lib")
[解决办法]
MSDN的例子
#include <iostream.h>
#include <stdlib.h>
#ifdef TESTDLL_EXPORTS
#define TESTDLL _declspec(dllexport)
#else
#define TESTDLL _declspec(dllimport)
#endif
// For use with the 16-bit versions, you need to use the following code
// to define DLLEXP. Also start by using a QuickWin application for
// testapp and a DLL project for testdll
//#ifdef _DLL
//#define DLLEXP __export
//#else
//#define DLLEXP
//#endif
class TESTDLL testdll
{
public:
testdll();
virtual ~testdll();
//void *operator new(size_t tSize);
//void operator delete(void *p);
#ifdef _WORKAROUND
void *operator new(size_t tSize);
void operator delete(void *p);
#endif
};
/*
testdll::testdll()
{
cout<<"In class DLL constructor\n";
}
testdll::~testdll()
{
cout<<"In class DLL destructor\n";
}
void *operator new(size_t tSize)
{
void *p=malloc(tSize);
cout<<"In DLL global new\n";
return p;
}
void operator delete(void *p)
{
free(p);
cout<<"In DLL global delete\n";
}
#ifdef _WORKAROUND
void *testdll::operator new(size_t tSize)
{
void *p=malloc(tSize);
cout<<"In DLL class new\n";
return p;
}
void testdll::operator delete(void *p)
{
free(p);
cout<<"In DLL class delete\n";
}
#endif
*/
[解决办法]
DLL_SAMPLE_API class DLLClass
改成
class DLL_SAMPLE_API DLLClass
试试。
[解决办法]