如何调用dll文件?如果包含lib文件?紧急!(50分)

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

christinadog

Unregistered / Unconfirmed
GUEST, unregistred user!
[blue]我在用C++Builder中做应用程序,需要调用一些dll文件,并且包含一些lib文件,应该怎么写啊?在那里包含进来?总是发生Linkder Error,要不然就是找不到dll,但是我的路径已经写对了。这是怎么回事?
请大家帮忙,谢谢!!![/blue]
 
静态调用啊,把你的函数贴出来,我帮你调用一下。[:D][^]
 
如何静态调用啊?
 
在菜单中:Project->Add To Project->文件类型选“Library file(*.lib)”,把这些.lib文件加入到项目中就可以了。(你的函数声明要正确哦)
 
加入了lib后,你的dll文件必须放在你的程序文件夹里面,或windows的system文件夹里,不然找不到的
 
如果你需要在一个工程中包含*.lib的话可以通过菜单Project|Add to Project,然后文件类型选择“(*.lib)”,把你想要添加的*.lib文件加入到工程中就可以了。
静态调用需要有三种文件
1、所需要调用的DLL文件。2、此DLL的输入库文件。3、此DLL的对应头文件
静态调用时,在工程中先导入此DLL的输入库文件,然后在你的工程中include进此DLL的对应头文件,之后就像使用平常函数一样使用DLL的函数了。
动态调用:
首先需要调用LoadLibrary你的DLL文件,比如:
HINSTANCE hInstance;
hInstance = LoadLibrary("DLL.dll");
然后调用GetProAddress,引入你的函数,比如:
FARPROC WriteProc;
WriteProc = GetProcAddress(hInstance , "WriteXMLFile");
如果你调用的函数有参数还需要进行必要的指针类型转化,比如:
WriteXMLFile函数有两个参数都是char* 的那么转换为
typedef int(* WriteFUNC)(char* ,char *);
WriteFUNC WriteFile = (WriteFUNC)WriteProc;
然后用WriteFile来传递参数进行函数调用。
调用完毕别忘了调用FreeLibrary。
但是如果是导出类的话是不能用动态调用的,只能用静态调用。
另外你也可以用Microsoft Visual Studio Tools里的Depends打开你的DLL库文件进行详细的察看。
 
他们全说了
 
后退
顶部