Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2340750
  • 博文数量: 816
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 5010
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-17 17:57
文章分类

全部博文(816)

文章存档

2011年(1)

2008年(815)

分类:

2008-12-17 18:08:59

我设计了一个用c++builder 6(已汉化) 编的对50Hz进行滤波的exe滤波器,公司要求将其改编为dll文件,并加在一个呈现波形的主程序(exe)前面,另外,该DLL文件,应具有检测其本身滤波特性的功能。

过去,我从来没编过DLL文件,一窍不通。看一本书:科学出版社《c++builder 6 程序设计教程》上面的介绍,越看越迷糊,而且书上对DLL的介绍只有二、三页,没有讲透。在此求助。

1、书上说:双击c++builder 6,打开后,按“文件-新建-其他-dll wizard”,就生成一个dll文件。
但我按全部保存,生成的是cpp和bpr,和新建窗体时生成的文件,后缀名完全相同。哪有什么DLL文件啊?

2、在编辑时,我输入的是书上的范例,如下:

double dblValue(double);
double halfvalue(double);
extern "C" __declspec(dllexport) double __stdcall changeValue
(double,bool);

double dblValue(double value)
{
  return value*value;
}

double halfValue(double value)
{
  return value/2.0;
}

__declspec(dllexport) double __stdcall changevalue(double value,bool which)
{
  return which?dblValue(value):halfValue(value);
}




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

奇怪的是,上面第三句,在我编辑到extern "C" __declspec时,
然后继续照书上抄,却显示错误信息,如下:
[C++ Error] Unit1.cpp(1): Unable to invoke Code Parameters due to errors in source code

这是怎么回事?照书上抄,都出错,这太打击我的积极性了!

3、公司里的程序员告诉我,本公司程序员多采用“隐式调用法”。保存程序时,不应该选“全部保存”,而应该选“工程-生成project2”,但这样一来,我又不明白了:
一则,书上根本没有提到这种保存方法,二则,书上还说用implib生成LIB文件,但这种“工程-生成project2”的方法,固然令我高兴地看到,总算生成DLL文件了,但也生成了我不希望生成的LIB文件,这样一来,还用implib命令干什么呢?

再问个菜鸟问题:用implib命令之前,必须已经生成了DLL文件,对不对?

4、这种所谓“编一个DLL文件”,实际上,到底生成了几个文件,是不是三个:DLL、LIB、调用该DLL的某个程序。

5、请问:为什么要生成LIB文件?我需要生成它吗?

6、这些文件,到底应该放在什么位置?如果乱放的话,难道调用程序就能在整张硬盘上搜索,从而找到它吗?
比如,我将DLL、LIB等文件放在“C:\Documents and Settings\Administrator”文件夹下面,将调用它(我也不知这个“它”,到底是
DLL还是别的什么)的CPP程序,放在“E:\BC\Dll学习”文件夹下面,如何?然后点击“运行”,就生成了exe,对不对?

--------------------next---------------------

阅读(1208) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~