3个回答
展开全部
第一种方式,静态连接:需要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);
第二种方式,直接动态加载dll,不需要lib文件,方法如下
typedef int (__cdecl *MYPROC)(LPWSTR); //这个定义根据你dll里的函数进行参数设置。参数要一至
MYPROC myfun;
HMODULE h = LoadLibrary("my.dll");
myfun = (MYPROC)GetProcAddress(hinstLib, "myPuts"); //写上dll里边那个函数名称
然后就可以直接调用 了。
最后FreeLibrary(h);
展开全部
你好。你要调用别的库的话之需要做如下两件事情
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 路径
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");
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");
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询