求助一个导出类的问题!

hanaichun 2006-02-15 02:40:38
在dll定义了一个导出类
EXPORT class testclass
{
public:
testclass();
virtual ~testclass();
public:
int addtest(int x,int y);
};
请问在exe中应该如何调用?
假如高手有实例,可以给我一个实例吗?
...全文
96 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
菲斯可儿 2006-02-16
  • 打赏
  • 举报
回复
#ifdef DLL_FILE
class _declspec(dllexport) circle //导出类circle
#else
class _declspec(dllimport) circle //导入类circle
#endif

加入这个以后,就可以共用一个h文件了,dll中定义了DLL_FILE宏,所以为export,exe中未定义DLL_FILE,所以为import
......
he_sl 2006-02-16
  • 打赏
  • 举报
回复
修改头文件并编译dll的话,exe不一定需要重新编辑。下面是我的测试结果:


测试Dll服务端(dll)的修改是否会影响客户端(exe)

1、加注释——不影响客户端,客户端不需要重编译

2、加函数——不影响客户端,客户端不需要重编译

3、修改被调用函数的实现——不影响客户端,客户端不需要重编译

4、修改被调用函数的定义,加入默认参数——影响客户端。客户端需要重编译!

5、修改被调用函数的定义,加入非默认参数——影响客户端。客户端需要重编译!
AndyFunction 2006-02-16
  • 打赏
  • 举报
回复
一定要两边都定义
比如定义一个共用的头文件
#ifndef CIRCLE_H
#define CIRCLE_H


#ifdef DLL_FILE
class _declspec(dllexport) circle //导出类circle
#else
class _declspec(dllimport) circle //导入类circle
#endif
{
public:
void SetCentre(const point ¢rePoint);
void SetRadius(float r);
float GetGirth();
float GetArea();
circle();
private:
float radius;
point centre;
};

#endif
syy64 2006-02-15
  • 打赏
  • 举报
回复
那肯定啊
hanaichun 2006-02-15
  • 打赏
  • 举报
回复
这样的话,假如要修改那个头文件的话,dll和exe都要重新编辑?
syy64 2006-02-15
  • 打赏
  • 举报
回复
在DLL中定义类,作为头文件,并在dll中定义其成员函数体;
在EXE文件中包含该类的头文件,声明该类对象,就可以使用了。
he_sl 2006-02-15
  • 打赏
  • 举报
回复
我理解是这样 否则你的exe工程怎么知道CHClass 不知道是否可以不用同一个.h文件 没试过
hanaichun 2006-02-15
  • 打赏
  • 举报
回复
he_sl(he_sl) 你的意思是说一定要在exe和dll中同时定义类?
蒋晟 2006-02-15
  • 打赏
  • 举报
回复
http://www.codeproject.com/dll/dllexport.asp
he_sl 2006-02-15
  • 打赏
  • 举报
回复

定义一份头文件同时给DLL、EXE使用

#if !defined HCLASS_H
#define HCLASS_H

class MY_EXT_CLASS CHClass
{
public:
CHClass();
virtual ~CHClass();

void PopMessageBox(CString strOutput);
};

#endif


在DLL中定义:MY_EXT_CLASS AFX_CLASS_EXPORT
在EXE中定义:MY_EXT_CLASS AFX_CLASS_IMPORT
  • 打赏
  • 举报
回复
顶一下

16,551

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Creator Browser
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧