Release版无法链接到lib文件

云开公司 2014-12-30 12:02:37
自定义生成dll的项目工程,在debug版本下可以生成lib文件和dll。但是在release选项下,无法链接到 工程.lib。我检索了一下,发现项目并没有生成这个lib文件。网上搜了半天,依然是一头雾水~~~
...全文
483 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhizhubo 2016-03-18
  • 打赏
  • 举报
回复
老师你好,请问你这个问题是怎么解决的?我好像碰到了相同的问题
云开公司 2014-12-30
  • 打赏
  • 举报
回复
谢谢各位的热心帮助~这个lib文件是第三方库的。我正在接手的项目和这个库文件名称相同~
云开公司 2014-12-30
  • 打赏
  • 举报
回复
引用 12 楼 lsq19871207 的回复:
release编译,正常情况下是要生成一个名字为“TAcd.lib"的文件,然后项目Acd要调用这个lib文件,再生成TAcd.dll -------------------------------------------------------------------------------------------------------------------------------- 你这说法不对的!dll项目生成的lib和dll文件在生成过程中不存在依赖关系,只是分工不同罢了,lib负责存放链接信息,而dll负责真正的实现,生成dll是不需要其lib文件的,这个lib文件只作为其他项目引用该dll的时候的链接。这就是为什么手动加载LoadLibrary使用dll的时候,是不需要这个lib文件的(要注意这个lib跟静态库不是同一个含义)! lsq19871207@163.com
额,这些我不太懂,顺道从您这里学习了。谢谢~只是,这个lib没有的话(搜索整个电脑都没有),这个项目会报链接错误。
信阳毛尖 2014-12-30
  • 打赏
  • 举报
回复
release编译,正常情况下是要生成一个名字为“TAcd.lib"的文件,然后项目Acd要调用这个lib文件,再生成TAcd.dll -------------------------------------------------------------------------------------------------------------------------------- 你这说法不对的!dll项目生成的lib和dll文件在生成过程中不存在依赖关系,只是分工不同罢了,lib负责存放链接信息,而dll负责真正的实现,生成dll是不需要其lib文件的,这个lib文件只作为其他项目引用该dll的时候的链接。这就是为什么手动加载LoadLibrary使用dll的时候,是不需要这个lib文件的(要注意这个lib跟静态库不是同一个含义)! lsq19871207@163.com
云开公司 2014-12-30
  • 打赏
  • 举报
回复
引用 10 楼 lsq19871207 的回复:
[quote=引用 5 楼 chenbf0713 的回复:] [quote=引用 2 楼 lsq19871207 的回复:] 无法链接到 工程.lib 没有生成这个lib文件 --------------------------------------------------------------------------- 一头雾水 请问dll编译成功了么?你说的是dll编译成功了却“没有生成这个lib文件”?
debug版本是一切正常的。生成的有xxxd.dll和xxxd.lib。但是,release版就会报错,说LINK : fatal error LNK1104: cannot open file "xxx.lib"[/quote] 我的意思是:dll项目单独编译是否成功啊!? LINK : fatal error LNK1104: cannot open file "xxx.lib"这个错误是连接错误,理论上dll已经生成成功了,只是其他项目引用这个dll的时候出了问题 如果dll单独生成已经成功,那就是在引用这个dll的地方lib文件路径写的不对! 1、仔细检查dll项目的lib输出目录 默认一般是在项目的输出目录,如果 项目属性——>配置属性——>链接器——>高级:“导入库”这一项设置了,就是在你设置的目录下 2、仔细检查引用项目的以下几项配置: 项目属性——>配置属性——>链接器——>常规:“附加库目录”中设置的lib路径是否正确 项目属性——>配置属性——>链接器——>输入:“附加依赖项”中引用的lib文件是否正确 或者: #pragma comment(lib,"xxx.lib")这句写的路径是否正确[/quote] 这本身就是一个dll项目,单独编译:debug版本是妥妥没问题的,但是,release就会报那个连接错误。我有查看过mak文件和release文件夹,发现说好的要生成的.lib文件却没有生成,而这个lib文件就是连接时需要的。(链接也是项目本身链接) 可能说的还是不太清楚。项目名称叫Acd,目标是生成一个dll文件。但是,release编译,正常情况下是要生成一个名字为“TAcd.lib"的文件,然后项目Acd要调用这个lib文件,再生成TAcd.dll。这整个过程,在Debug环境下,是完全正常的。那么,那么问题来了,为什么release这个文件夹里没有那个可供调用的该死的TAcd.dll呢??
信阳毛尖 2014-12-30
  • 打赏
  • 举报
回复
引用 5 楼 chenbf0713 的回复:
[quote=引用 2 楼 lsq19871207 的回复:] 无法链接到 工程.lib 没有生成这个lib文件 --------------------------------------------------------------------------- 一头雾水 请问dll编译成功了么?你说的是dll编译成功了却“没有生成这个lib文件”?
debug版本是一切正常的。生成的有xxxd.dll和xxxd.lib。但是,release版就会报错,说LINK : fatal error LNK1104: cannot open file "xxx.lib"[/quote] 我的意思是:dll项目单独编译是否成功啊!? LINK : fatal error LNK1104: cannot open file "xxx.lib"这个错误是连接错误,理论上dll已经生成成功了,只是其他项目引用这个dll的时候出了问题 如果dll单独生成已经成功,那就是在引用这个dll的地方lib文件路径写的不对! 1、仔细检查dll项目的lib输出目录 默认一般是在项目的输出目录,如果 项目属性——>配置属性——>链接器——>高级:“导入库”这一项设置了,就是在你设置的目录下 2、仔细检查引用项目的以下几项配置: 项目属性——>配置属性——>链接器——>常规:“附加库目录”中设置的lib路径是否正确 项目属性——>配置属性——>链接器——>输入:“附加依赖项”中引用的lib文件是否正确 或者: #pragma comment(lib,"xxx.lib")这句写的路径是否正确
云开公司 2014-12-30
  • 打赏
  • 举报
回复
去掉就哗啦啦的一片错。。。
引用 8 楼 zhao4zhong1 的回复:
将Release版附加依赖库中的abc.lib去掉再试试。
赵4老师 2014-12-30
  • 打赏
  • 举报
回复
将Release版附加依赖库中的abc.lib去掉再试试。
云开公司 2014-12-30
  • 打赏
  • 举报
回复
引用 4 楼 brk1985 的回复:
运行通不过? 如果是运行通不过,应该是lib文件没配置好,debug下的lib配置,release下也需要配置一遍。。。
debug版本是可以通过的。release版的我也配置好的。迷糊的地方在于,LNK error提示的是我不能打开跟项目同名的lib文件。比如我项目名称是abc,error:LNK 1104:cannot open file "abc.lib"
引用 3 楼 xianglitian 的回复:
看项目配置 把debu和release的内容挨个对一下
耐心的对了好几遍。确实没发现什么问题~
云开公司 2014-12-30
  • 打赏
  • 举报
回复
引用 4 楼 brk1985 的回复:
运行通不过? 如果是运行通不过,应该是lib文件没配置好,debug下的lib配置,release下也需要配置一遍。。。
debug版本是可以通过的。release版的我也配置好的。迷糊的地方在于,LNK error提示的是我不能打开跟项目同名的lib文件。比如我项目名称是abc,error:LNK 1104:cannot open file "abc.lib"
云开公司 2014-12-30
  • 打赏
  • 举报
回复
引用 2 楼 lsq19871207 的回复:
无法链接到 工程.lib 没有生成这个lib文件 --------------------------------------------------------------------------- 一头雾水 请问dll编译成功了么?你说的是dll编译成功了却“没有生成这个lib文件”?
debug版本是一切正常的。生成的有xxxd.dll和xxxd.lib。但是,release版就会报错,说LINK : fatal error LNK1104: cannot open file "xxx.lib"
brk1985 2014-12-30
  • 打赏
  • 举报
回复
运行通不过? 如果是运行通不过,应该是lib文件没配置好,debug下的lib配置,release下也需要配置一遍。。。
向立天 2014-12-30
  • 打赏
  • 举报
回复
看项目配置 把debu和release的内容挨个对一下
信阳毛尖 2014-12-30
  • 打赏
  • 举报
回复
无法链接到 工程.lib 没有生成这个lib文件 --------------------------------------------------------------------------- 一头雾水 请问dll编译成功了么?你说的是dll编译成功了却“没有生成这个lib文件”?
快乐鹦鹉 2014-12-30
  • 打赏
  • 举报
回复
我也是一头雾水。你检查Release和debug的配置有什么不同了么?

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧