C++怎么调用lib库啊?
我现在有一个lib库,想把它变成dll文件。我没有头文件,但是知道里面的所有函数名、参数和返回值,这样可以吗?怎么把它编译为dll文件啊?该怎么做呢?怎样引用这个lib,...
我现在有一个lib库,想把它变成dll文件。
我没有头文件,但是知道里面的所有函数名、参数和返回值,这样可以吗?怎么把它编译为dll文件啊?
该怎么做呢?怎样引用这个lib,怎样声明里面的函数呢?(比如里面有一个函数为:double getver(int ang, int evg);要怎么声明啊?) 展开
我没有头文件,但是知道里面的所有函数名、参数和返回值,这样可以吗?怎么把它编译为dll文件啊?
该怎么做呢?怎样引用这个lib,怎样声明里面的函数呢?(比如里面有一个函数为:double getver(int ang, int evg);要怎么声明啊?) 展开
展开全部
1 LIB文件直接加入到工程文件列表中
在VC中打开File View一页,选中工程名,单击鼠标右键,然后选中"Add Files to Project"菜单,在弹出的文件对话框中选中要加入DLL的LIB文件。然后在首先要使用该函数的地方加上该LIB的头文件,如#include "..\lib.h"即可(没有头文件当然就不用了)。
2 设置工程的 Project Settings来加载DLL的LIB文件
打开工程的 Project Settings菜单,选中Link,然后在Object/library modules下的文本框中输入DLL的LIB文件,如you.lib(或者lib文件的路径,包括文件名)。然后在首先要使用该函数的地方加上该LIB的头文件,如#include "..\lib.h"即可(没有头文件当然就不用了)。
3 通过程序代码的方式
加入预编译指令#pragma comment (lib,"*.lib"),这种方法优点是可以利用条件预编译指令链接不同版本的LIB文件。因为,在Debug方式下,产生的LIB文件是Debug版本,如Regd.lib;在Release方式下,产生的LIB文件是Release版本,如Regr.lib。然后在首先要使用该函数的地方加上该LIB的头文件,如#include "..\lib.h"即可(没有头文件当然就不用了)。
当应用程序对DLL的LIB文件加载后,还需要把DLL对应的头文件(*.h)包含到其中,在这个头文件中给出了DLL中定义的函数原型,然后声明
在VC中打开File View一页,选中工程名,单击鼠标右键,然后选中"Add Files to Project"菜单,在弹出的文件对话框中选中要加入DLL的LIB文件。然后在首先要使用该函数的地方加上该LIB的头文件,如#include "..\lib.h"即可(没有头文件当然就不用了)。
2 设置工程的 Project Settings来加载DLL的LIB文件
打开工程的 Project Settings菜单,选中Link,然后在Object/library modules下的文本框中输入DLL的LIB文件,如you.lib(或者lib文件的路径,包括文件名)。然后在首先要使用该函数的地方加上该LIB的头文件,如#include "..\lib.h"即可(没有头文件当然就不用了)。
3 通过程序代码的方式
加入预编译指令#pragma comment (lib,"*.lib"),这种方法优点是可以利用条件预编译指令链接不同版本的LIB文件。因为,在Debug方式下,产生的LIB文件是Debug版本,如Regd.lib;在Release方式下,产生的LIB文件是Release版本,如Regr.lib。然后在首先要使用该函数的地方加上该LIB的头文件,如#include "..\lib.h"即可(没有头文件当然就不用了)。
当应用程序对DLL的LIB文件加载后,还需要把DLL对应的头文件(*.h)包含到其中,在这个头文件中给出了DLL中定义的函数原型,然后声明
展开全部
#include "xxx.h"
#pragma comment(lib, "xxxx.lib")
用lib是需要有库的头文件的,用dll动态加载不需要头文件。
比如这个文章中的动态调用dll中函数的例子
http://www.cnblogs.com/lhbssc/archive/2012/02/08/2342853.html
首先,调用LoadLibrary(),加载库
然后,调用GetProcAddress(),获取要调用的函数的首地址
第三,使用获取到的函数首地址,即函数
最后,调用FreeLibrary()释放dll库
#pragma comment(lib, "xxxx.lib")
用lib是需要有库的头文件的,用dll动态加载不需要头文件。
比如这个文章中的动态调用dll中函数的例子
http://www.cnblogs.com/lhbssc/archive/2012/02/08/2342853.html
首先,调用LoadLibrary(),加载库
然后,调用GetProcAddress(),获取要调用的函数的首地址
第三,使用获取到的函数首地址,即函数
最后,调用FreeLibrary()释放dll库
追问
可是我没有这个的dll啊,就只有一个lib,所以就想把它编译成dll。
追答
下个dll吧,你那个lib也是下的吧
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#pragma comment(lib, "xxxx.lib")
追问
里面的函数怎么声明啊?
追答
直接写你lib中的函数声明
比如你在lib 或者dll文件 的源码中写了一个导出函数 叫 void show();
在调用库的源文件中就直接 void show();写函数声明即可。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询