调用DLL是不是没有直接调用代码快?高手乱入,高分伺候。。。 (300分)

  • 主题发起人 cyantree
  • 开始时间
C

cyantree

Unregistered / Unconfirmed
GUEST, unregistred user!
一个类比较大,又是核心部分,为了模块化、实现与界面分离,所以想做成DLL调用,但是
又担心效率不好,所以想问一下:调用DLL是不是没有直接调用代码快?静态调用和动态调
用DLL的效率是否有差别?

希望高手解答,最好能给出理由和证据,多谢多谢!!!
 
没有什么好担心的!
只是调用方式不同而已。
常用的模块用静态调用比较好,免得经常加载!
不常用的模块用动态调用比较好,用完了就释放掉,免得占用资源!
[:)]
 
哈哈,我顺便问一个 Dll 的问题:)

假如现在有一个 TStringGird,M 列,N 行,全部填写的是数字。我现在要把这个
TStringGrid 里全部的数字按列的顺序,第一列,第二列……,输入一个 Dll 里面的一个
函数,Dll里的函数处理完以后,在把结果也按列的顺序输出。
这个 Dll 里的函数的参数应该怎么写呢?

谢谢了!:)
 
to 双流星:
这是一般的说法,我希望能有更有说服力的理论

to iCANK:
Function SortStringGrid(const Data : Array of Integer) : TString; Stdcall;
 
s

array of integer ====> TStrings 真的合适吗?

 
模块化也不一定非得写成DLL呀,
动态链接库中的调用和静态调用效率没有什么区别,
如果到用的时候才Load动态链接库,就比较花时间

和界面分离,的意思是说不依靠界面也可以使用,
只要不使用和界面有关的对象和函数就行了
为了和界面配合,需要留一些借口,譬如事件和属性用来和界面交互

为了看起来独立,可以单独放在一个或几个Unit中
也可以编成一个包Package
 
cyantree,谢谢。
Function SortStringGrid(const Data : Array of Integer) : TString; Stdcall;

这个 Dll,如果让 C++ 或 VB 来调用,也可以吗?

 
调用Dll效率不成问题,否则微软也不会用这么多dll了
 
to LiChaoHui:
多谢了。做成DLL的原因是类太大,直接嵌进主程序的话,主程序就太大了。
目前的做法是DLL的接口是一个类,接口只有一个函数,主程序调用时直接调用事先
定义的虚基类就可以了。

to iCANK:
TString只是临时写的,当然用TList也可以,或者自己定义一个结构都可以,
Data Array of Integer在C里面是int *Data

如果想用C调用这个函数可以写成:
Pascal:
Type
PInteger = ^Integer;

Function SortStringGrid(Data : Array of Integer) : PInteger;

C/C++:
int *SortStringGrid(int *data);
 
写成包,也许会更好一些吧
 
多人接受答案了。
 
顶部