当前位置:主页>仓库管理软件> 列表

如何动态生成DLL文件??? 找进销存数据库表

仓库管理软件版1楼: 各位大侠:
小弟碰到的问题如下:在我的一个应用程序运行期间,如何依据输入的参数,动态生成一个DLL文件? 比如:程序A已经运行,在A的界面有一个输入框,我输入一段文字,按下生成按钮,就能生成一DLL文件;这段文字可以做为生成DLL文件的参数。

2楼: .........静态的都勤奋学习中!
动态生成DLL没听过..学学学习!
顺便接分```````````` 如财务软件破解版下载

3楼: 没人知道吗?

4楼: 怎么弄,学习一下

5楼: 你的程序必须要动态生成dll么?
可以将运行期间输入的参数作为dll的某个导出函数的参数,如GetPram(AParam: PChar)
通过这个函数获得你输入的文字

6楼: 是这样的:我做的软件是通过DLL控制最终用户使用的;当有新客户时,我依据客户给我的参数重新生成DLL文件,但每次都需打开DELPHI,重新编译,然后生成DLL文件,再将这个DLL文件发布给客户;我现在需要在应用程序中动态实现这个功能。 不知是否主清楚?

仓库管理软件版7楼: 也就是说你要自己生成dll 那么
你写的东西必需经过一个 编译 和 连接的过程 一般时调用Make.exe和link.exe

而且语言不同 你这些“参数”也会有约束



如果你想抛开以上的另立山头 那就..........

8楼: 看你的参数是什么 如果只是一些文字信息 你可以考虑加密后放在外部文件中

如果你说的参数是方法的话 那就很难办了

9楼: 这些参数只是一些文字性信息?有没有好的方法?我见过好象有一些软件可以实现这样的功能。但不知道实现方法?

10楼: 如果只是数字 文本一类的参数 以可以把这些参数封装到一个资源DLL(姑且这么叫)中
当然图片 声音也可以 让你的DLL去调用这个资源DLL

如果你说的参数是方法的差异 比如A客户和B客户调用的方法同名但参数不同
那么这个实际是你DLL设计的问题

不知这样说楼主是否明白??

11楼: 学习啊.动态的

12楼: Avalon:
我现在不知道如何在程序运行期间将这些参数封装到DLL中?并且可以在运行的程序中进行编译以生成新的DLL或者覆盖原有的DLL? 如药品进销存表格

13楼: 动态生成DLL来达到楼主目的,要实现起来非常麻烦,那要你的程序带一个编译器,这样不太现实,楼主可以向其它方向想一下。
简单一点的就是,把传进DLL的参数保存起来,可以保存在独立的文件里,也可以保存在数据库里,这可以由主程序管理,DLL启动的时候就在保存该参数的文件里读取。

仓库管理软件版14楼: 楼主做过资源文件吧 把你的配置资源封装为资源文件然后做成资源DLL

你的业务DLL调用这些资源DLL就可以

15楼: 我见过这样的程序;所以各位的回答还不是很满意。有高手吗?

16楼: 从你的描述来看,在静态的情况下,你要修改你的DLL中某个Pas中的一段为客户给你的那段文字信息。
那么,可以考虑根据这段文字信息动态生成那个(几个)pas,然后调用Delphi的命令行程序dcc32.exe编译你的源文件即可。

17楼: 蛋炒饭:
想法不错,能否再讲清楚点?或者举一个最简单的例子?
tks.

18楼: 不可能的,除非你能做编译器,恐怕中国也没几个做得了的

19楼: 很简单,不做编译器

假设你原先的DLL工程由如下文件组成:
project1.dpr
unit1.pas

unit1.pas中有某个需要修改的函数,例如是下面的样子:
procedure ddd();
begin
....
xxx := 客户传入的字符串。
end

实际上,unit1的大部分代码是固定的,只是因为每个客户由不同的特征串导致代码不一样而已。
所以你就当写文本文件一样,根据输入的特征串,生成不同的unit1

然后在你的程序中按如下格式调用:
dcc32.exe licence.dpr -q -b

dcc32 是borland带的命令行编译器,在Delphi的bin目录下
还有别的命令,可以自己参考

其实就是动态生成源码,然后用例如批处理的东西编译成DLL,没什么很高深的东西

20楼: 蛋炒饭:

想法非常棒,也在趋近我想要的效果;还有如下不是十分清楚,谢!

"然后用例如批处理的东西编译成DLL" ???

仓库管理软件版21楼: -_-:

就是在代码中用 winexec之类的函数来调用如下的批命令来生成DLL
dcc32.exe licence.dpr -q -b

22楼: 感谢: 蛋炒饭!

我尝试一下! 如进销存数据库表