急!!!dll的简单问题

superrover 2003-01-04 02:13:03
小弟初学cb,近来被一个dll的问题搞得头大:
为了隐藏程序实现的细节,现需将基类做成dll,然后静态连接到程序中使用.
问题是我将基类做成dll后,生成.lib文件,add to project,设置好声明.可是,能使用基类中的方法,却不能使用基的数据,搞得我实类中在是糊涂,还望各位指点迷津,是不是我的做法有问题啊?

另:哪儿有关于这方面的文章?介绍一下吧!

...全文
25 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
imickey 2003-01-11
呵呵,我也是要考试了

不过我申请了缓考,呵呵

不会来了要抓紧,不然考不过就没有学位证啦!!!
回复
wjm2000 2003-01-09
面象对象方法不鼓励直接访问类的数据成员,所以你可写个函数返回数据成员。
为什么要用DLL输出类,为什么不写成COM对象呢,用BCB写COM对象很容易,而且别人用起来省时省力!
回复
Behard 2003-01-09
只能使用静态调用
//DllProject.cpp
#include <vcl.h>
#pragma hdrstop
#include "fsDllForm.h" //这个是打开一个空的窗口
USEFORM("fsDllForm.cpp", DllForm);

class __declspec(dllexport) __stdcall RetDllClass
{
public:
RetDllClass();
void CreateAForm();
TDllForm *DllForm;
} ;

int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void*)
{
return 1;
}

RetDllClass::RetDllClass()
{
}

void RetDllClass::CreateAForm()
{
DllForm = new TDllForm(Application);
DllForm->ShowModal();
delete DllForm ;
}

//loaddll.h
#ifndef Unit1H
#define Unit1H

#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>

#include "fsDllForm.h"


__declspec(dllexport) class __stdcall RetDllClass
{
public:
RetDllClass();
void CreateAForm();
TDllForm *DllForm;
};
class TForm1 : public TForm
{
__published: // IDE-managed Components
TButton *Button1;
TButton *Button2;
void __fastcall Button1Click(TObject *Sender);
private: // User declarations
RetDllClass *RetDll ;
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};

extern PACKAGE TForm1 *Form1;

#endif

//loaddll.cpp
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}

void __fastcall TForm1::Button1Click(TObject *Sender)
{
RetDll = new RetDllClass();
RetDll->CreateAForm();
delete RetDll ;
}
回复
Behard 2003-01-09
做 Dll 是没有什么区别的,只不过是向导不一样而已
你可以使用导出类来实现
回复
kingkee 2003-01-08
CB自己附带那本,参考手册,有中文纸版。
回复
jspring 2003-01-04
基类的数据用函数来取得可以吗?如GetXXX()
回复
我来看看CB 2003-01-04
public:
int data;
回复
cupidvenus 2003-01-04
程序上传看看.
回复
superrover 2003-01-04
另:我感觉关于cb的书好少啊,远没有vc那么多,想提高看哪些书比较好呢?
回复
superrover 2003-01-04
无论怎样,还是要感谢各位的热心帮助,我回给各位加分的
csdn上有这么多热心的人,真是好人啊
回复
superrover 2003-01-04
快要放假了,考试也多了起来,许多还贼难.一边准备考试,一边还要作程序,时间好紧,而且这个dll的老板要的又比较急,没办法,白天看书,晚上编程,编了好几个晚上,死也做不出来,我也是刚学,遇到一些小问题就把我放到了,郁闷的要死.昨天考完了一门,今天一边聊天一边做,还是用以前的方法,竟然作出来了.唉, 可叹可叹,似乎有些明白程序员的乐趣就在那程序做出时的一声喊中.
回复
cloudxuxi 2003-01-04
基的数据是私有变量吗?
回复
superrover 2003-01-04
问题是我将基类做成dll后,生成.lib文件,add to project,设置好声明.可是,能使用基类中的方法,却不能使用基的数据,搞得我实类中在是糊涂,还望各位指点迷津,是不是我的做法有问题啊?

另:哪儿有关于这方面的文章?介绍一下吧!

回复
ThinkX 2003-01-04
所以COM中才没有数据,只有方法,就是为了保证编译器之间的不兼容性。
你用COM中的方法,之导出接口就可以了。
回复
发动态
发帖子
Windows SDK/API
创建于2007-08-02

1202

社区成员

C++ Builder Windows SDK/API
申请成为版主
社区公告
暂无公告