刚弄了一个程序,需要链接Dll,采用lib方式。呵呵我真晕没用VC,查了一天终于发现自己错了。
lib方式是一种静态链接的方式必须存在.lib文件才行,方式如下:
//.dll文件
__declspec(dllexport) 函数名
{
//函数体
}
//调用的exe文件
#pragma (lib,"dll文件名")
//函数声明
int main()
{
//调用
}
我晕了一天,我使用的DEVC++的IDE,编译器是g++。很明显没生成.lib文件。
这时我只能使用第二种方式进行链接调用了。动态链接
//dll文件可以不用任何的改变,也可以不用上面的dll的导入函数
//exe文件调用函数
HINSTANCE hp = LoadLibrary(调用的dll文件名);
typedef int (*pss)();
pss pd = GetProcAddress(hp,"函数名");/*这我曾经因为分开写犯了个十分低级的错误,事迹上定义了一个空指针函数*/
pd();//这个函数可以直接使用了
博主编写程序链接Dll,原采用lib静态链接方式,因使用DEVC++的IDE和g++编译器未生成.lib文件而失败。后改用动态链接方式,介绍了静态和动态链接Dll的代码示例,如静态链接需存在.lib文件,动态链接用LoadLibrary和GetProcAddress函数。

7297

被折叠的 条评论
为什么被折叠?



