首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

VS2010下怎么调用动态链接库

2013-07-01 
VS2010下如何调用动态链接库?我自己写的一个只打印 Hello World的函数。编成dll文件,名字叫dlltest.dll。然

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()是什么?

热点排行