首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >DLL项目不生成.exp和.lib文件

DLL项目不生成.exp和.lib文件
EN

Stack Overflow用户
提问于 2012-11-01 21:49:02
回答 3查看 10.5K关注 0票数 7

因此,我有一个包含3个项目(2dll和1个.exe)的c++解决方案。

下面是基本的依赖关系表示:

应用程序--> DLL2

应用程序--> DLL1

DLL2 --> DLL1

我遇到的问题是,DLL2 (在构建它时)确实会生成.dll,但不会生成我需要在应用程序项目中正确引用DLL2的.lib和.exp。然而,DLL1确实生成了这些文件,我已经比较了DLL1和DLL2的设置,但我找不到有什么不同。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-11-01 22:22:17

问题是DLL2只有.h文件,在任何相关的.cpp文件中都没有内容。所以集成开发环境并没有意识到创建.lib文件的必要性。

票数 6
EN

Stack Overflow用户

发布于 2012-11-01 21:59:05

对此的简单解释是,您只是忘记了导出任何内容。如果没有导出,链接器将不会创建.lib/.exp文件。您可以通过在DLL上运行dumpbin.exe /exports来验证这一点。带着你什么也看不见的期望。

使用__declspec(dllexport)从DLL中导出符号。或.def文件。

票数 11
EN

Stack Overflow用户

发布于 2015-03-15 05:23:54

我刚刚发现了另一种方法来导致同样的事情发生。我将一些在另一个DLL中作为服务例程开发和测试的例程移到了它们自己的DLL中。由于在我编写第一行代码之前就计划好了这一步,它们没有被标记为导出,因此使用了该项目的默认调用约定__cdecl。当我构建这个库时,构建环境并没有创建.LIB文件。经过一些调查,并受到本主题中提到的__declspec(dllimport)的启发,我意识到,尽管我将声明移动到了由新建项目向导生成的模板头文件中,但我忘记将生成的调用约定宏的名称插入到原型中。

通过在包含实现的头文件和CPP文件中指定调用约定,我得到了预期的.LIB文件。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13178448

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档