菜鸟问题,函数可以编译生成DLL,类咋就不成呢?

czb 2007-04-14 09:57:56
/* 文件名:lib.h */
#include <string>


#ifndef LIB_H

#define LIB_H

int add(int x,int y);
int sub(int x,int y);

//class CPerson{
//public:
// int id;
// string name;
//public:
// void setID(int id);
// void setName(string name);
// void printID();
// void printName();
//};

#endif

#include "stdafx.h"
#include "lib.h"

int add(int x, int y)
{
return x + y;
}

int sub(int x,int y)
{
return x-y;
}


//void CPerson::setID(int id)
//{
// this.id = id;
//}
//
//void CPerson::setName(string name);
//{
// this.name = name;
//}
//
//void CPerson::printID(string name);
//{
// cout << id << endl;
//}
//
//void CPerson::printName(string name);
//{
// cout << name << endl;
//}

如上面的文件内容,单单编译add、sub函数是可以编译成DLL的,不过如果把类的注释去掉,就死都编译不过了,报错"error C4430: missing type specifier - int assumed. Note: C++ does not support default-int"。即使把add、sub函数的声明和实现去掉,仅留下类CPerson,也编译不过。

编译器是vs2005

我现在是函数和类都要保留,因为类不能导出给其它语言调用,所以就转了个弯,先弄个函数,在函数里调用类。如果哪位大虾除了COM之外还有其它的方法,也请指出。

...全文
468 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
huanghf 2007-09-18
  • 打赏
  • 举报
回复
mark
czb 2007-08-15
  • 打赏
  • 举报
回复
感谢各位朋友的大力帮助
结贴了
czb 2007-04-28
  • 打赏
  • 举报
回复
robotom(robotom):
我把你说的那个,改过了,还是不行啊.

还有我只是内部要用一些类,也要象"class AFX_EXT_CLASS CPerson{" 一样,在类的名字前加AFX_EXT_CLASS吗?
fantiyu_sr 2007-04-16
  • 打赏
  • 举报
回复
要把类当作扩展dll类导出,不能当作普通函数
robotom 2007-04-16
  • 打赏
  • 举报
回复
类的定义:
void printID();
void printName();

类的实现:
void CPerson::printID(string name);
void CPerson::printName(string name);

这两处不一致.


czb 2007-04-16
  • 打赏
  • 举报
回复
可能是我没有说清楚

我这里并不需要导出类,只需要导出函数就可以了.
CPerson类隐藏在内部,在函数内部再调用类.

如果在CPerson的前面加上AFX_EXT_CLASS,即"class AFX_EXT_CLASS CPerson{"这样,则报下面的错误
error C2470: 'CPerson' : looks like a function definition, but there is no parameter list;
双杯献酒 2007-04-15
  • 打赏
  • 举报
回复
只有扩展的DLL才可以导出类.
标准DLL只能导出函数和全局变量.(必须是extern "C" 的)
wubooy 2007-04-14
  • 打赏
  • 举报
回复
楼上的两位大牛说的很清楚了,哈哈
xyxfly 2007-04-14
  • 打赏
  • 举报
回复
class AFX_EXT_CLASS CPerson{
...
「已注销」 2007-04-14
  • 打赏
  • 举报
回复
在类和你要导出的成员函数的前面申明你要导出这个类,declspec(dllexport)

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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