C语言调用dll

LibHandle 获得不到dll,dll文件该放哪个文件夹下,dll中有个int add_one(int i)函数

第1个回答  推荐于2016-10-31
这个相对路径是你当前代码存放的位置.
实际应用中相对路径比绝对路径实用多了.
比如你可以再代码路径上再创建一个文件夹,命令dll,里面放所有的dll文件
那么你此时路径".\\dll\\test.dll"
你可以发给我,我帮你看看追问

估计不是路径放的问题,加载的时候加载不到不知为啥

追答

方便的话 把dll发给我

追问

#include
__declspec(dllexport) int add_one(int i)
{
return i+1;
}
就这么简单的一句

追答

extern "C" __declspec(dllexport) int add_one(int i);
这样定义

追问

哎,我起名直接用的test.c 加上extern 也不行 不弄了 谢谢哈

本回答被提问者和网友采纳
第2个回答  2015-04-22
LoadLibrary( "d:\\test.dll" ) ;带上库文件所在的全路径名追问

unused CXX0030: Error: expression cannot be evaluated
调试出这个错误 ,LibHandle这个变量 还是获得不了,需要添加什么依赖项什么的么

追答

一、你的test.dll文件在哪里,你要把LoadLibrary()括号中写上完整的路径名
LibHandle=LoadLibrary(".\\test.dll" ); //你这样写一下试试
二、LibHandle=LoadLibrary( XXX ) ;//之后,加个判断:
if ( LibHandle== NULL )
{
printf("load library error\n"); //如果出现这句,说明你的动态库文件名XXX那里写的不对!或dll库有问题
return ;
}
三、在add_one=(hand)GetProcAddress( LibHandle, ZZZ );之后,也加一句
if ( add_one== NULL )
{
printf("get function error\n"); //如果出现这句,说明你的ZZZ函数名写错了 !
return ;
}

相似回答