loadlibrary调用dll(loadlibrary加载dll)

http://www.itjxue.com  2023-02-21 11:57  来源:未知  点击次数: 

c语言怎么调用dll文件?

1、新建DLLTest文件夹,在该文件夹中新建source文件夹。

2、在source文件夹中造add.c。

3、win+R+cmd请出总指挥“命令行”,输入。

4、继续输入(路径也要随机应变)link /DLL /out:E:\VCfile\DLLTest\source\add.dll E:\VCfile\DLLTest\source\add.obj。

5、新建源文件call_dll.c或.cpp放到DLLTest文件夹,同时add.dll也复制过来。

6、编译,连接运行出现个5。调用成功。

注意事项:

C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。

用LoadLibrary加载DLL失败,为什么呢?解决方法

我用的是VC2005,生成了一个DLL,然后在程序中加载这个DLL,如下:

HINSTANCE

hDll

=

::LoadLibrary("D:\\hkrt.dll");

DWORD

dwErr

=

::GetLastError();

执行结果是这样的:在我的开发机器上加载是正常的,但把程序和DLL放在一台没有装VC2005的机器上执行时,加载就失败了,hDll的值是0,dwErr的值是14001,查了查“Error

Lookup”,14001对应的描述是:“由于应用程序配置不正确,应用程序未能启动。重新安装应用程序可能会纠正这个问题”。

我先后试了三台没有安装VC的机器,都是这个问题。

我上网查原因,有人说需要安装“.Net

Framework”,于是我下载了“.Net

Framework2.0”并安装,之后动态库可以正常调用了。

这个程序和这个DLL是需要打成安装包的,如果再把“.Net

Framework2.0”打进安装包,安装包的体积就会变得很大,由于一些原因,生成的安装包不能很大。

我想问一下,有什么方法可以在不安装.Net的情况下正常调用?谢谢了!------解决方案--------------------------------------------------------是由于加载DLL才需要“.Net

Framework2.0”吗?可以把DLL设置一个最简单的函数调用试试,如果可以调用成功就是DLL引起的,否则,

不是DLL引起的,那就是跟你调用的程序有关系了。那就必须安装“.Net

Framework2.0”了。因为你开发的时候是在“.Net

Framework2.0”下面开发的。

------解决方案--------------------------------------------------------如果实在不行,有个办法就是导入到VC6.0环境下面,那就不需要“.Net

Framework2.0”了。

------解决方案--------------------------------------------------------很可能是客户机上没有

8.0

C/C++

运行期库,

去下载个:Download

details:

Visual

C++

2005

Redistributable

Package

(x86)

安装部署试试看,

8.0

的C库搞了个

side

by

side

部署方式

------解决方案--------------------------------------------------------是不是你制作安装包的时候

点击安装包的项目名称

选择它的属性

看看其配置

去掉“.Net

Framework2.0”,如果你已经去掉了还要的话,就改用vc6.0做吧!

------解决方案--------------------------------------------------------两个方案:1.将代码在VC6下重新编译一下(不支持降解,需生成同成同名同类型工程,然后将源文件替换)

在VB里怎样用LoadLibrary和GetProcessAddress显式调用DLl

用LoadLibrary加载Dll文件到内存用GetProcessAddress根据函数名称获取函数在内存中的地址,再用CallWindowProc来调用函数,但是用vb显示加载Dll有一个坏处就是

LRESULT CallWindowProc(WNDPROC lpPrevWndFunc, HWND hWnd, UINT Msg, WPARAM wParam, LPARAM IParam);你调用的函数的参数必须和CallWindowProc的除了第一个参数,其它的参数必须一样才能调用也就是这四个参数HWND hWnd, UINT Msg, WPARAM wParam, LPARAM IParam,如果想要调用任意参数的函数还是要用vc内嵌一点汇编编译成Dll给vb调用才行

(责任编辑:IT教学网)

更多

推荐FTP服务器文章