VC编程,为什么在调用一个动态链接库里面定义的函数的时候要在工程设置的c/c++选项中的工程选项中改东西

 我来答
简简单单9OK
2013-03-26 · TA获得超过141个赞
知道小有建树答主
回答量:130
采纳率:50%
帮助的人:62.5万
展开全部
因为程序在运行的时候要用到动态库里面的函数,程序必须知道去哪里能找到函数地址。在工程选项里面修改东西,只是动态链接库在程序运行时加载到程序中。当然你也可以不修改,直接动态加载,用#pragma comment()手动加载到工程中
laozibi
2013-03-26 · TA获得超过7966个赞
知道大有可为答主
回答量:1.3万
采纳率:0%
帮助的人:4584万
展开全部
有两种方法调用:
1,静态调用。打电话到他们的项目的路径,然后添加以下代码:
的#pragma评论(LIB,的“dege.lib”)
用extern“C”的__declspec(dllimport的经过编译的DLL和LIB文件)FuncA的(/ /参数);
那么你就可以直接使用FuncA的功能,与正常功能。事实上,这是一个静态库,因为你很可能不是一个lib文件,建议使用第二种方式:
2,动态调用。
的typedef INT(* lpFunA)(INT,INT); / /宏定义的函数指针类型,这里假设您的FuncA的是,有两个int参数的函数int类型的,你可以假设的总和新增功能。
添加到使用FunA的地方下面的代码
HINSTANCE HDLL ;/ /定义DLL处理
lpFunA addFun ;/ /自定义函数指针
HDLL =调用LoadLibrary(“.. \ \的调试\ \ dege.dll“);/ /动态加载dll,这里假设你的DLL,你想调用它的工作原理调试
(hDll! = NULL)
地址{
addFun (lpFunA)GetProAddress(HDLL中,“FunA”);/ /获取FunA的
(FunA! = NULL)
{
/ /这里正常使用addFun的,像一个普通的函数 BR />}
FreeLibrary则(HDLL),;/ /使用到释放处理
}
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8872feb
2013-03-26
知道答主
回答量:30
采纳率:0%
帮助的人:19.7万
展开全部
应该是静态调用的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式