请问如何把一个写好的类封装在lib里面?

pink_tulip 2005-11-20 06:46:55
还有对应的h文件该怎么写?

谢谢。
...全文
195 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dragonzxh 2005-12-09
  • 打赏
  • 举报
回复
不是太懂你的意思,如果是要把class封在dll里给其他程序调用的话,直接声明导出类就是了
extern "C" class __declspec(dllexport)A
{
public:
void Foo();
A();
virtual ~A();
};

在调用的地方声明
extern "C" class __declspec(dllimport)A
{
public:
A();
virtual ~A();
void Foo();

};
并且
#pragma comment(lib,"dll.lib")
然后就可以直接用这个导出类了。
pink_tulip 2005-12-09
  • 打赏
  • 举报
回复
有人了解么?
pink_tulip 2005-12-09
  • 打赏
  • 举报
回复
怎么写lib已经懂了。
现在的问题是:stdafx.h的作用究竟是什么?一个class如果要编成一个lib,必须要加stdafx.h才能编译通过,而一个函数编成lib则可以不加stdafx.h。两者的区别在哪里?
kzzk 2005-11-21
  • 打赏
  • 举报
回复
封在LIB?
pink_tulip 2005-11-20
  • 打赏
  • 举报
回复
这么说来它只是一个优化作用了?那去掉它理论上应该不影响才对。
hushan518 2005-11-20
  • 打赏
  • 举报
回复
是预编译头,每次程序编译的时候只编译修改过的,以前的不重新编译,提高速度。
pink_tulip 2005-11-20
  • 打赏
  • 举报
回复
加上#include "stdafx.h"后通过了。


请问stdafx.h是做什么用呢?不太明白。而且编译一般的函数的lib没有加它也可以通过。
lhsxqsc 2005-11-20
  • 打赏
  • 举报
回复
大哥,class A后面没有“ ;”
JohnTitor 2005-11-20
  • 打赏
  • 举报
回复
加上#include "stdafx.h"
pink_tulip 2005-11-20
  • 打赏
  • 举报
回复
写了这样一个类,直接编译
#include <iostream>
using namespace std;

class A
{
public:

aaa();
}

A::aaa()
{
cout<<"this is a"<<endl;
}

fatal error C1010: unexpected end of file while looking for precompiled header directive

似乎只能在lib里放置一般的函数。
JohnTitor 2005-11-20
  • 打赏
  • 举报
回复
把工程设置为静态库就可以了,头文件和平时一样写就好了

33,317

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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