e.exe
与我的自定义静态库c.lib
链接,该库使用在w.dll
中定义的Win32 API。 w.dll
位于C:\ Windows \ System32,其导入库为w.lib
,位于Windows SDK目录中。壳牌w.lib
被列为附加依赖在c.lib
或e.exe
项目? (e.exe
在这两种情况下都能成功建立。)最佳做法是什么?为什么?我猜e.exe
不应该知道关于w.lib
。具有相关性的静态库
c.lib
旨在仅由一组开发人员共享(不会发送给客户)。
TEST:我用VS2008和DUMPBIN实用程序来测试这两种情况下,这里是结果:
- 案例1:
w.lib
添加附加依赖在c.lib
项目。
dumpbin /archivemembers c.lib
输出列出了从c.lib
项目作为归档成员w.dll
都偏移和.obj文件。
- 案例2:
w.lib
不c.lib
但e.exe
项目添加其他相关:
这一次,DUMPBIN输出仅包含c.lib
.obj文件和c.lib
尺寸小于在情况1中
(c.lib
被添加为附加依赖性在w.exe
项目在这两种情况下)
注意:我用w.lib
和w.dll
这里虚构,通用名称为Windows库,但他们可能是如Userenv.lib和Userenv.dll或Version.lib和Version.dll ...
谢谢您的全面解答。我最初的推定是错误的 - 我认为这是可取的exe不知道lib的依赖关系,但现在当我从* import library + code *的角度来看待它时,让exe知道它的代码是什么包括来自静态库的代码)依赖于。 – 2011-01-10 14:33:07