none
匪夷所思的"error LNK1181" RRS feed

  • 问题

  • 各位好!

    将一个正常的动态链接库项目由vc9升级到vc10,在编译时,遇到了一个奇怪的LNK1181错误。

    假如这个项目名称为MyProject,它在编译时居然要将"MyProject.lib"作为附加的依赖项,于是LNK1181错误就这样产生了。

    但是,我在工程属性中,并未将"MyProject.lib"作为附加的依赖项,而且找遍了linker的其它设置,也未发现存在"MyProject.lib"的设置。无奈下,将MyProject.vcxproj用记事本打开,全文搜索"MyProject.lib",也没有任何发现。

    然而,Linker的命令行中,/DLL 后面确实存在这个"MyProject.lib"。

    哪位知道原因啊,在此首先谢过!!!

     

     ------

    补充一下:在项目属性中,也没有找到任何包含"MyProject.lib"名称的宏。

    • 已编辑 ThinkBox 2010年5月27日 9:37 补充
    • 已更改类型 ThinkBox 2010年5月28日 12:36
    2010年5月27日 8:47

全部回复

  • 你好!

    你项目中有没有循环引用?例如项目A引用项目B,项目B引用项目A。

    Linker命令行中,/DLL 开关是指明输出的,与LNK1181的错误无关。


    Please remember to mark the replies as answers if they help and unmark them if they provide no help.
    Welcome to the All-In-One Code Framework! If you have any feedback, please tell us.
    2010年6月10日 3:17
  • /DLL为生成DLL文件,

    你的这个项目肯定是一个DLL文件,但是在这个DLL文件里面,你可能用了自己已经export的函数并且指定了链接方式(静态链接?),导致链接器会通过查找尚未生成的你的项目的LIB文件.

     

    建议使用LoadLibrary来调用DLL,而不要直接用Lib链接.

    把你的命令行都贴上来看看


    0xBAADF00D
    2010年6月10日 3:48
    版主
  • Nancy Shao, 你好!

    我没有说/DLL 开关与LNK1181的错误有关。可能我描述的还不够清楚,LNK1181是因为这个项目要引用自身的lib,奇怪就奇怪在这里了。因为要附加的依赖项都会在项目属性->Linker->Input->Additional Dependencies中列出,而我根本没有找到这个lib文件,只是在项目属性->Linker->Command Line中看到确实存在这个lib文件。

    这个问题在提出后不久就解决了,方法是使用VS2010新建一个空项目,将原项目的文件移植过去重新编译,一切正常。只是升级出现的这个问题一直没有找到原因。

    2010年6月10日 15:07
  • Vonger,你好!

    不是这个原因,升级不成功,一时也找不到原因,我已将将这个升级项目删除了,所以也无法贴命令行了。现在用VS2010重建dll项目,将原项目文件转移过来,编译和使用都一切正常。

    2010年6月10日 15:11