急!!!dll的简单问题

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

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

...全文
56 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
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中的方法,之导出接口就可以了。
超星图书转换利器 FreePic2Pdf 和 Pdg2Pic 最新绿色版(pdg转换成pdf),包含Pdg2Pic和FreePic2Pdf两部分软件。 Pdg2Pic 功能: 将PDG文件转成图像文件(包括TIFF、JPG、PNG),具有下列特色: 转换过程不占用系统剪贴板,因此在转换时,不影响用户在前台的正常工作。 在打开目录时自动对PDG文件进行格式统计,并报告结果。 可以自动将文件按封面、前言、目录、正文、附录的顺序排列,也可以手动调整。 提供预览功能,在转换前可以先浏览PDG图像和PDG文件信息。 如果转换过程中出现错误,将给出错误日志,便于定位有问题的PDG文件。 PDG文件的扫描DPI自动转存入TIFF、PNG文件,便于在转换成PDF文件时指定页面大小。 如果检查发现PDG文件是纯正的JPG文件,将不进行任何转换,直接将PDG复制为JPG;黑白PDG文件转存为采用CCITT G4压缩的TIFF文件,以获取高压缩比;灰度/彩色PDG重新压缩为有损的JPG或采用JPEG压缩的TIFF文件,或无损压缩的PNG文件 ,或JPEG 2000(JP2)文件(质量系数为100%时,JPEG 2000为无损压缩,否则为有损压缩)。 与FreePic2Pdf配合,能够自动生成PDF多级书签;能够在PDF文件中自动生成三段页码:封面、版权页用大写英文字母,目录页用小写罗马字母,正文页用阿拉伯数字;能够将BookInfo.dat作为文本添加到PDF文件中,并用其中内容填写PDF的Document Properties,包括Title、Author、Subject、Keyword。 能够将PDG文件直接OCR成文本文件。OCR引擎为微软Office 2003所带的Microsoft Office Document Imaging (MODI)。OCR时自动跳过封面、书名、版权、目录页。 Pdg2Pic基于超星浏览器的Pdg2控件实现,因此运行时需要在本地机上先安装超星浏览器,或注册一个能用的Pdg2.dll。本软件对超星浏览器3.8的支持没有问题,其它版本的超星浏览器没有试过。 PDG文件是超星公司电子图书的专有格式,需要用超星公司的专用浏览器才能阅读。本人无意对超星公司的版权进行任何形式的侵犯,也不希望任何人用本工具从事侵权活动。如果需要浏览PDG电子书,请通过购买点卡等方式,以合法的途径获得。本软件假定用户通过合法的手段获得PDG文件,只是由于希望能够在比超星浏览器更好、更方便的浏览器上阅读,并且不对转换出来的文件进行扩散的情况下,才需要将PDG文件转换成图像文件。 FreePic2Pdf 功能: 将图像文件(包括TIFF、JPG、PNG、GIF、BMP、JPEG 2000)合并、转换成PDF文件的软件: 对有损/无损压缩的JPEG 2000、有损压缩的JPG文件及采用JPEG/OJPEG算法压缩的TIFF文件,直接将原始数据流嵌入PDF文件,避免因为重新压缩而造成图像质量下降;对无损压缩的图像文件,黑白图像解码后压缩为JBig2(有损或无损)或CCITT G4,其它解码后压缩成ZIP数据流嵌入PDF文件。 支持多页TIFF和多帧(动画)GIF,每页或每帧算一幅图像。 可以指定生成的PDF文件的页面大小(除A4、B5等,还支持国内常用的32开、16开、大32开)及页边距。如果不指定页面的纸张大小,可以指定页面的固定宽度(长度随图像大小伸缩),避免连续阅读时因为页面宽度变来变去而影响阅读。 支持通过接口自动生成多级书签、分段页码、添加文本页、设置PDF的Document Properties。 接口文件可以用于新生成的PDF,也可以用于已有的PDF,包括往已有的PDF上加书签、从PDF取书签等。 软件基于开源代码实现,运行时不需要任何第三方软件或控件的支持。当然如果要浏览制作出来的PDF文件,必须安装Adobe PDF Reader等PDF阅读软件。 使用步骤: 第1步:我们要先用到的是Pdg2Pic,由于这个软件在使用是要用到超星的Pdg2控件,所以我们要先把超星中的Pdg2.dll文件复制到WINDOWS文件夹下的SYSTEM32文件夹中(放到其他的地方行不行我还没有试过)然后点开始---运行---输入regsvr32 pdg2.dll 注册完成之后就可以使用Pdg2Pic了。 软件已经用1、2、3、4表示了操作步骤:先点击“1、选择需转换的PDG文件所在文件夹:” 选择你要转换的PDG文件夹后,这时先不要着点“开始转换”因为经过第一步的选择文件夹之后,第2步的“选择存放转换出来的图象文件的文件夹”也跟着默认的和需转换的PDG文件

1,222

社区成员

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

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