VS2008 工程同时生成dll和lib文件

时间:2022-07-07 00:16:02
工程以前是vc2003的。编译后生成一个dll文件和一个lib文件。

现在升级为2008的,不知道为什么只生成dll,不生成lib文件了。

import library:设置正确。

不知道有没有人知道可能原因?

22 个解决方案

#1


你默认用向导生成的也不产生lib文件?

#2


那种生成。

不过生成的就不能更改吗?

#3


up

#4


如果你有时间的话,就对照来两个工程配置,看看有什么不同

没时间的话,直接新建一个可以导出lib的,把实现文件拷贝过去不就行了

#5


比较不出什么差异

#6


在工程上点击右键,然后选择properties,进入后在左侧的树形目录中选择Linker->General
然后要保证Enable Incremental Linking (从上往下数是第四项)选项选择(Yes (/INCREMENTAL));
Ignore Import Library(第六项)选择No;
Link Library Dependencies (倒数第二项)选择YES;

自己调整下,应该就可以了

#7


我就是这么设置的

引用 6 楼 wutaihua 的回复:
在工程上点击右键,然后选择properties,进入后在左侧的树形目录中选择Linker->General 
然后要保证Enable Incremental Linking (从上往下数是第四项)选项选择(Yes (/INCREMENTAL)); 
Ignore Import Library(第六项)选择No; 
Link Library Dependencies (倒数第二项)选择YES;          // ///////// 这个是倒数第三项

自己调整下,应该就可以了

#8


是不是必须要def文件?

#9


Linker-〉General

Output File:    ../../Bin/***.dll
Show Progress:  Not Set
Version:
Enable Incremental Linking:  Yes(/INCREMENTAL)
Suppress Startup Banner:    Yes(/NOLOG0)
Ignore Import Library: No
Register Output: No
Pre-user Redirection: No
Additional Library Directories:
Link Library Dependency Inputs: No
Use UNICODE Response Files: Yes

#10


是不是lib的目录变了啊
vs2005和2003的输出目录就不一样

#11


引用 8 楼 csztan 的回复:
是不是必须要def文件?

不是,如果编译过了,就不需要,如果编译都没有通过的话,就需要,会有提示的。我看了一下我的那些库,有的有,有的就没有,照样可以编译通过。而且不影响使用

#12


还没有解决吗?如果还有问题的话,或者是怀疑路径有错。那么你可以看编译的信息啊,把那些output中打印出来的信息,搞到记事本或者UltraEdit上,就可以看到了关于lib生成的信息。实在没有,就没辙了,毕竟没亲自去搞这个。我没遇到过类似的

#13


我再输出里面 查找lib字符串,只查到这个: 
Severe: The Pug XML library API variant does not match your implementation!
Severe: Your implementation may not run correctly with this variant.


另外如果是路径错误的话,我在资源管理器里搜索应该生成的lib文件也查不到。

#14


引用楼主 csztan 的帖子:
工程以前是vc2003的。编译后生成一个dll文件和一个lib文件。

现在升级为2008的,不知道为什么只生成dll,不生成lib文件了。

import library:设置正确。

不知道有没有人知道可能原因?


import library:设置正确。
咋设置的? 

#15


刚好也碰到这个问题,找到个方法可解决:

在工程上右键 -> 添加 -> 新建项 -> 选"模块定义文件(.def)" -> 随便输入个名字 -> 添加

现在编译就可生成.lib 文件了,然后把添加的文件删除,以后都没问题了.
如果上边的操作是添加现有项,不能产生(.lib)的问题依旧存在.

#16


上面的回答有误,现更正:
不生成.lib问题主要原因是缺少 模块定义文件 ,上面的添加操作主要是添加了一个内容为 "LIBRARY "***"" 的模块文件,就可生成.lib文件.

主要的设置是:
项目属性->链接器->输入->模块定义文件->在里面添上*.def即可解决问题

#17


确实如keagan所说可解决问题

项目属性->链接器->输入->模块定义文件->在里面添上*.def

#18


确实需要def文件,我的工程原来是在vc6下编译的,不加def就是不出lib,加了就出

#19


呵呵,明白了

#20


引用 15 楼 keagan 的回复:
刚好也碰到这个问题,找到个方法可解决:

在工程上右键 -> 添加 -> 新建项 -> 选"模块定义文件(.def)" -> 随便输入个名字 -> 添加

现在编译就可生成.lib 文件了,然后把添加的文件删除,以后都没问题了.
如果上边的操作是添加现有项,不能产生(.lib)的问题依旧存在.


我刚试了。。。还真可以。。。谢谢了...

#21


添加导出符号~~

#22


此 DLL 在创建时不导出任何符号。 因此,在生成此 DLL 时
  生成时不会产生 .lib 文件。 如果希望此项目
  成为其他某个项目的项目依赖项,则需要
  添加代码以从 DLL 导出某些符号,
  以便产生一个导出库,或者,也可以在项目“属性页”对话框中的
  “链接器”文件夹中,将“常规”属性页上的
  “忽略输入库”属性设置为“是”。

#1


你默认用向导生成的也不产生lib文件?

#2


那种生成。

不过生成的就不能更改吗?

#3


up

#4


如果你有时间的话,就对照来两个工程配置,看看有什么不同

没时间的话,直接新建一个可以导出lib的,把实现文件拷贝过去不就行了

#5


比较不出什么差异

#6


在工程上点击右键,然后选择properties,进入后在左侧的树形目录中选择Linker->General
然后要保证Enable Incremental Linking (从上往下数是第四项)选项选择(Yes (/INCREMENTAL));
Ignore Import Library(第六项)选择No;
Link Library Dependencies (倒数第二项)选择YES;

自己调整下,应该就可以了

#7


我就是这么设置的

引用 6 楼 wutaihua 的回复:
在工程上点击右键,然后选择properties,进入后在左侧的树形目录中选择Linker->General 
然后要保证Enable Incremental Linking (从上往下数是第四项)选项选择(Yes (/INCREMENTAL)); 
Ignore Import Library(第六项)选择No; 
Link Library Dependencies (倒数第二项)选择YES;          // ///////// 这个是倒数第三项

自己调整下,应该就可以了

#8


是不是必须要def文件?

#9


Linker-〉General

Output File:    ../../Bin/***.dll
Show Progress:  Not Set
Version:
Enable Incremental Linking:  Yes(/INCREMENTAL)
Suppress Startup Banner:    Yes(/NOLOG0)
Ignore Import Library: No
Register Output: No
Pre-user Redirection: No
Additional Library Directories:
Link Library Dependency Inputs: No
Use UNICODE Response Files: Yes

#10


是不是lib的目录变了啊
vs2005和2003的输出目录就不一样

#11


引用 8 楼 csztan 的回复:
是不是必须要def文件?

不是,如果编译过了,就不需要,如果编译都没有通过的话,就需要,会有提示的。我看了一下我的那些库,有的有,有的就没有,照样可以编译通过。而且不影响使用

#12


还没有解决吗?如果还有问题的话,或者是怀疑路径有错。那么你可以看编译的信息啊,把那些output中打印出来的信息,搞到记事本或者UltraEdit上,就可以看到了关于lib生成的信息。实在没有,就没辙了,毕竟没亲自去搞这个。我没遇到过类似的

#13


我再输出里面 查找lib字符串,只查到这个: 
Severe: The Pug XML library API variant does not match your implementation!
Severe: Your implementation may not run correctly with this variant.


另外如果是路径错误的话,我在资源管理器里搜索应该生成的lib文件也查不到。

#14


引用楼主 csztan 的帖子:
工程以前是vc2003的。编译后生成一个dll文件和一个lib文件。

现在升级为2008的,不知道为什么只生成dll,不生成lib文件了。

import library:设置正确。

不知道有没有人知道可能原因?


import library:设置正确。
咋设置的? 

#15


刚好也碰到这个问题,找到个方法可解决:

在工程上右键 -> 添加 -> 新建项 -> 选"模块定义文件(.def)" -> 随便输入个名字 -> 添加

现在编译就可生成.lib 文件了,然后把添加的文件删除,以后都没问题了.
如果上边的操作是添加现有项,不能产生(.lib)的问题依旧存在.

#16


上面的回答有误,现更正:
不生成.lib问题主要原因是缺少 模块定义文件 ,上面的添加操作主要是添加了一个内容为 "LIBRARY "***"" 的模块文件,就可生成.lib文件.

主要的设置是:
项目属性->链接器->输入->模块定义文件->在里面添上*.def即可解决问题

#17


确实如keagan所说可解决问题

项目属性->链接器->输入->模块定义文件->在里面添上*.def

#18


确实需要def文件,我的工程原来是在vc6下编译的,不加def就是不出lib,加了就出

#19


呵呵,明白了

#20


引用 15 楼 keagan 的回复:
刚好也碰到这个问题,找到个方法可解决:

在工程上右键 -> 添加 -> 新建项 -> 选"模块定义文件(.def)" -> 随便输入个名字 -> 添加

现在编译就可生成.lib 文件了,然后把添加的文件删除,以后都没问题了.
如果上边的操作是添加现有项,不能产生(.lib)的问题依旧存在.


我刚试了。。。还真可以。。。谢谢了...

#21


添加导出符号~~

#22


此 DLL 在创建时不导出任何符号。 因此,在生成此 DLL 时
  生成时不会产生 .lib 文件。 如果希望此项目
  成为其他某个项目的项目依赖项,则需要
  添加代码以从 DLL 导出某些符号,
  以便产生一个导出库,或者,也可以在项目“属性页”对话框中的
  “链接器”文件夹中,将“常规”属性页上的
  “忽略输入库”属性设置为“是”。