发布网友 发布时间:2022-04-21 07:04
共4个回答
热心网友 时间:2022-06-18 14:49
1 LIB文件直接加入到工程文件列表中
在VC中打开File View一页,选中工程名,单击鼠标右键,然后选中"Add Files to Project"菜单,在弹出的文件对话框中选中要加入DLL的LIB文件。然后在首先要使用该函数的地方加上该LIB的头文件,如#include "..\lib.h"即可(没有头文件当然就不用了)。
2 设置工程的 Project Settings来加载DLL的LIB文件
打开工程的 Project Settings菜单,选中Link,然后在Object/library moles下的文本框中输入DLL的LIB文件,如you.lib(或者lib文件的路径,包括文件名)。然后在首先要使用该函数的地方加上该LIB的头文件,如#include "..\lib.h"即可(没有头文件当然就不用了)。
3 通过程序代码的方式
加入预编译指令#pragma comment (lib,"*.lib"),这种方法优点是可以利用条件预编译指令链接不同版本的LIB文件。因为,在Debug方式下,产生的LIB文件是Debug版本,如Regd.lib;在Release方式下,产生的LIB文件是Release版本,如Regr.lib。然后在首先要使用该函数的地方加上该LIB的头文件,如#include "..\lib.h"即可(没有头文件当然就不用了)。
当应用程序对DLL的LIB文件加载后,还需要把DLL对应的头文件(*.h)包含到其中,在这个头文件中给出了DLL中定义的函数原型,然后声明
热心网友 时间:2022-06-18 14:49
添加一个.cpp源文件,添加如下代码:
(注意,要把 mydll.dll 放到 生成的.exe 同一目录下)
#include <windows.h>
全局...
typedef int( *pGetMaxN)(int, int);//定义一个函数指针类型
typedef void( *pShowMsg)(char *, char *);
main()...
//动态加载 dll
HMODULE hMole = LoadLibrary(L"mydll.dll");
if (!hMole)
{
cout << "Error!" << endl;
}
//获取函数 GetMaxNumber 的地址
pGetMaxN pgetm = (pGetMaxN)GetProcAddress(hMole, "GetMaxNumber");
cout << pgetm(10, 5) << endl;
//获取函数 ShowMsg 的地址
pShowMsg pshowm = (pShowMsg)GetProcAddress(hMole, "ShowMsg");
pshowm("内容", "标题");
//释放
FreeLibrary(hMole);
测试成功!!是不是很激动呢?!
热心网友 时间:2022-06-18 14:50
如果没有头文件也不有lib文件,那么就只能是如下了:
::LoadLibrary(dllPathname);
::GetProcAddress(mole, procName);追问能给我写个完整点的代码吗
热心网友 时间:2022-06-18 14:50
typedef int (*type_add)(int a,int b);
type_add add;
HMODULE hDll=LoadLibrary("innov_rfid_codemachine_interface.dll");
add=(type_add)GetProcAddress(hDll,"add");
add(1,2);