VS2010下如何调用动态链接库?
我自己写的一个只打印 Hello World的函数。编成dll文件,名字叫dlltest.dll。
然后新建一个工程,将dlltest.dll拷到工程里面,然后工程中的C语言代码如下:
#include <Windows.h>
#include <stdio.h>
typedef void(*FUN)();
int main()
{
const char* dllName = "dlltest.dll";
const char* funName1 = "PrintHello";
HMODULE hDLL = LoadLibrary("dlltest.dll");
if(hDLL != NULL)
{
FUN fp1 = (FUN)GetProcAddress(hDLL,funName1);
if(fp1 != NULL)
{
fp1();
}
else
{
printf("Cannot Find Function %s", funName1);
}
FreeLibrary(hDLL);
}
else
{
printf("Can not find %s!\n", dllName);
}
return 1;
}
最后执行结果是打印:“Can not find dlltest.dll!”,也就是代码第29行的东西,说明我的dll没有加载进去,请问该怎么样加载啊?应该是建项目的时候做一些配置吗?
Visual?Studio?2010 DLL 动态链接库 VS2010 动态调用库
[解决办法]
dlltest.dll 拷到工程里面? 要拷到和你生成的 exe 同一个目录下面.
[解决办法]
将dll文件放在和exe相同的目录下或放在c:\windows\system32目录下再试试?
[解决办法]
指定绝对路径试一下
HMODULE hDLL = LoadLibrary("filedir\\dlltest.dll");[解决办法]
那你找一个 Depends.exe 工具, 把 dlltest.dll 拖进去, 看看依赖项里有没有红色或黄色之类的东西.
另外, 你的 exe 和 dll 没有出现一个 32位, 一个 64 位的情况吧?
[解决办法]
GetLastError()是什么?