c++静态库和动态库 50

c++静态库和动态库使用lua问题。。。我现在要用到lua库,我是个小新手,都是自己学的。。不太成熟。我下载下来的lua中包含src文件。然后我把所有的.h和.c还有一个... c++静态库和动态库使用lua问题。。。

我现在要用到lua库,我是个小新手,都是自己学的。。不太成熟。我下载下来的lua中包含src文件。然后我把所有的.h和.c还有一个.hpp文件都同时放到了一个控制台应用下。然后改变属性中的配置类型为lib。然后编译出一个lib文件。我想问的问题是:
第一:我能不能直接拿我编译出来的lib在其他工程中使用,头文件怎么处理?是放到vs目录下自己新建个lua的头文件目录把lua中.h文件都拷贝过去然后#include<lua/lua.h>这样用呢?还是不用这么麻烦?这样还需要编译dll吗?
第二:我改成动态库。。编译出来个dll然后把dll放到system32中。然后把头文件像第一个问题一样放到vs目录下。这样还用lib文件吗?还用指定lib目录和附加依赖项引用lib吗?
第三:还有就是我用不用建立个lua的项目在工程中,然后在解决方案中把这个项目改成静态库形式。然后把所有的lua文件都放到工程中。然后直接#pragma comment(lib,"lua.lib")这样用呢。

就是基础太差了。。不知道怎么弄希望高手帮帮忙,帮忙解决下。。。谢谢了,主要是dll和lib之间的依赖关系不清楚,工程中用到库时,是单独只有一个dll就可以还是必须有lib,或是只有个lib,没有dll工程也可以正常使用呢?????
展开
 我来答
匿名用户
2013-03-30
展开全部
1、编译出的静态库可以使用。视代码不同有时你可能需要指定链接到哪个*.lib,有时不需要(头文件里#pragma指定过了)。你需要在项目属性里设置include和lib目录,不想这样做的话,就把它们丢到C库一起。
2、动态库一起的*.lib只起符号链接作用,和静态库一样只需要*.lib即可编译链接成功,但运行需要*.dll,它可以放在系统目录或程序同目录。头文件没#pragma的话自己#pragma或在链接选项里指定*.lib文件,这种方法可以像使用静态库一样使用动态库。
还有可以不依赖*.lib的符号链接直接使用*.dll的方法,譬如用WinAPI编程的话,使用LoadLibrary-GetProcAddress-FreeLibrary来加载*.dll中的一个函数。
3、没看懂你的意思。

最后那段话:静态库需要*.lib即可编译链接运行。动态库需要*.dll才能运行,视使用方法的不同可能需要*.lib才能编译链接可能不需要。

以上只对VS而言。MinGW不需要符号链接也可以像使用静态库那样使用动态库。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Storm代理
2023-08-29 广告
"StormProxies是全球大数据IP资源服务商,其住宅代理网络由真实的家庭住宅IP组成,可为企业或个人提供满足各种场景的代理产品。点击免费测试(注册即送1G流量)StormProxies有哪些优势?1、IP+端口提取形式,不限带宽,I... 点击进入详情页
本回答由Storm代理提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式