读书人

怎么引用DLL中的类

发布时间: 2012-09-14 23:00:48 作者: rapoo

如何引用DLL中的类
我已经制作好了类,并生成了abc.dll。如何在新建的项目下加载这个dll文件,使用其中的ClockTime类?
vs2008中的源码如下:
//头文件
#pragma once
#ifndef ClockTime_H
#define ClockTime_H

class _declspec(dllexport) ClockTime
{
private:
int hour;
int second;
int minute;
public:
ClockTime(void);
~ClockTime(void);
void setHour(int _hour);
int getHour()const;
};

#endif

//源文件
#include "StdAfx.h"
#include "ClockTime.h"

ClockTime::ClockTime(void)
{
hour=0;
second=0;
minute=0;
}

ClockTime::~ClockTime(void)
{
}

void ClockTime::setHour(int _hour)
{
hour=_hour;
}

int ClockTime::getHour()const
{
return hour;
}

[解决办法]
class _declspec(dllimport) ClockTime
[解决办法]
你在dll中定义一个函数,用于返回一个ClockTime类对象的指针
例如
ClockTime *GetClockTime(void)
{
return new ClockTime();
}

把 ClockTime_H引入你要引用 ClockTime类的文件。
然后
ClockTime *ct = GetClockTime();
就ok了,用完别忘了释放ct。
[解决办法]
最好不要引用dll中的类
如果还是想用
你得把这个dll相关的lib加到你的项目中
[解决办法]
1.导出DLL。
2.在引用的地方添加类定义的头文件。
[解决办法]
同意楼上

探讨
最好不要引用dll中的类
如果还是想用
你得把这个dll相关的lib加到你的项目中

[解决办法]
静态或者动态


静态:添加头文件,#pragrma comment(lib, “XXX.lib”)

动态:loadlibrary("XXX.dll")
[解决办法]
class __declspec(dllexport) ClockTime
如果在DLL中这样定义了类.你又正确的去链接了lib文件.那么就可以在应用程序中使用类声明对象.
为了看你是不是正确的在DLL中定义了该类为导出的.你可以用 dumpbin -exports 去查看

读书人网 >C++

热点推荐