要在VC的MFC中加载一个动态链接库,以调用其中的函数。求高手指导!初级学者,望详细点!

说的好的,还可以加财富,谢谢了啊... 说的好的,还可以加财富,谢谢了啊 展开
 我来答
vived
2011-10-14 · TA获得超过113个赞
知道答主
回答量:85
采纳率:0%
帮助的人:73.6万
展开全部
第一种方式,静态连接:需要lib和dll文件。楼上的说的那个设置就是设置lib文件地址。如果不想在编译器里设置,可以进行代码里写: #pragma comment(lib, "my.lib")
第二种方式,直接动态加载dll,不需要lib文件,方法如下
typedef int (__cdecl *MYPROC)(LPWSTR); //这个定义根据你dll里的函数进行参数设置。参数要一至
MYPROC myfun;
HMODULE h = LoadLibrary("my.dll");
myfun = (MYPROC)GetProcAddress(hinstLib, "myPuts"); //写上dll里边那个函数名称
然后就可以直接调用 了。
最后FreeLibrary(h);
ruby9997
2011-10-13 · 超过68用户采纳过TA的回答
知道小有建树答主
回答量:137
采纳率:0%
帮助的人:164万
展开全部
你好。你要调用别的库的话之需要做如下两件事情

1:添加include 路径
Project->Settings->C++ ->Preprocessor
在 additional include directory 中添加你要加载的库的对应include文件夹 的路径

2:添加lib路径
Project->Settings->Link
在General 中 object library modules 中填写 你要加载的库的 对应 .lib文件名

在INPUT中 object library modules 中填写 你要加载的库的 对应 .lib文件名
additional library path 填写对应的库的路径

当然,你的库对应的.lib文件 和 .dll 文件要在同一个目录下。
多谢采纳。
更多追问追答
追问
说的很详细。请问1.:添加include 路径:添加你要加载的库的对应include文件夹 的路径。这个include文件夹貌似没有啊!?

在INPUT中
additional library path 填写对应的库的路径。是不是就是库文件的路径?
追答
没有就不加。添加include只是增加一个编译器的搜索路径。
如果你需要的库没有对应include文件夹,就忽略第一步。

另外如果.dll有对应.h文件的话,可以把它放到自己的工程中。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2011-10-15
展开全部
动态连接:
typedef int (WINAPI ICEPUB_SAVESCREEN)(char *bmpFile);
ICEPUB_SAVESCREEN *icePub_saveScreen = 0;
HINSTANCE hDLLDrv = LoadLibrary("icePubDll.dll");
if(hDLLDrv)
{
icePub_saveScreen=(ICEPUB_SAVESCREEN *)GetProcAddress(hDLLDrv,"icePub_saveScreen");
}
if(icePub_saveScreen)
icePub_saveScreen("screen.bmp");
if(hDLLDrv)
FreeLibrary(hDLLDrv);

静态连接:
extern "C"
{
__declspec(dllexport)
int WINAPI icePub_regionGifFileDisp(HWND mHwmd,char *strGifFilename,int regionFlag=1);

}

#pragma comment(lib,"icePubDll.lib")

icePub_regionGifFileDisp(m_hWnd,"xiaoya.gif");
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式