我在vs2008下,建立一个dll项目;
想导出一个类,但是在导出类的过程中类的函数名字发生了改变,然后我通过在添加extern "C",后导出函数的名字还是还没改变。请问这个extern "C"该如何添加:我在头文件按如下方法添加会产生很多错误
#define IMAGE2005_API extern "C"__declspec(dllexport)
#else
#define IMAGE2005_API extern "C"__declspec(dllimport)
#endifclass IMAGE2005_API CImage2005
{
private:
void *m_pImage;public:
CImage2005(void);inline HRESULT ImageLoad( LPCTSTR pszFileName );
inline BOOL ImageIsNull();
inline BOOL Draw( HDC hDestDC, const RECT& rectDest );public:
virtual ~CImage2005(void);};如果我把extern "C"添加在class前面,虽然没有错误,但是导出函数名字却还是不是原先定义的,依然是改变过的函数名。
想导出一个类,但是在导出类的过程中类的函数名字发生了改变,然后我通过在添加extern "C",后导出函数的名字还是还没改变。请问这个extern "C"该如何添加:我在头文件按如下方法添加会产生很多错误
#define IMAGE2005_API extern "C"__declspec(dllexport)
#else
#define IMAGE2005_API extern "C"__declspec(dllimport)
#endifclass IMAGE2005_API CImage2005
{
private:
void *m_pImage;public:
CImage2005(void);inline HRESULT ImageLoad( LPCTSTR pszFileName );
inline BOOL ImageIsNull();
inline BOOL Draw( HDC hDestDC, const RECT& rectDest );public:
virtual ~CImage2005(void);};如果我把extern "C"添加在class前面,虽然没有错误,但是导出函数名字却还是不是原先定义的,依然是改变过的函数名。
ordinal hint RVA name 1 0 00001000 ??0CImage2005@@QAE@ABV0@@Z
2 1 00001A10 ??0CImage2005@@QAE@XZ
3 2 00001A90 ??1CImage2005@@UAE@XZ
4 3 00001020 ??4CImage2005@@QAEAAV0@ABV0@@Z
5 4 0000330C ??_7CImage2005@@6B@
6 5 00001AF0 ?Draw@CImage2005@@QAEHPAUHDC__@@ABUtagRECT@@@Z
7 6 00001AE0 ?ImageIsNull@CImage2005@@QAEHXZ
8 7 00001AC0 ?ImageLoad@CImage2005@@QAEJPB_W@Z
照理说我不知道怎么有8项呢,类里面的函数是5个,类本身一个,应该只是6个,那剩余的两个又是什么
在vs2008下,我想做一个MFC的DLL,其中有一个基于CView的类,如下:
class AFX_EXT_CLASS DFCIImageView : public CView
却无法声明成导出类,很是郁闷!