none
DLL link unresolved external sybol 问题 RRS feed

  • 问题

  • 我有2个DLL: DLL_A & DLL_B, 按顺序compile

    当compile DLL_B 的时候,发现 DLL_B 不能Link, 是由于找不到 DLL_A里面的一个 function。

    但实际上DLL_B 根本就不需要用DLL_A里的这个function。

    是怎么回事呢??

     

    error LNK2001: unresolved external symbol "public: 。。。

    fatal error LNK1120: 1 unresolved externals

     

    2010年12月8日 1:17

答案

  • Hi 鬼,
    欢迎来MSDN论坛提问。

    根据我的了解,这个问题很可能是由以下情况导致。
     1.在你的程序中有些函数你只做了声明,没有定义!链接阶段,编译器找不到函数定义,所以报错
    一个函数声明如下:
    void foobar();
    一个函数的定义如下:
    void foobar()
    {
        // c++ code here
    }
    2.你的.CPP文件和.H文件没有进行编译。你直接在source files文件夹和header files文件夹里把对应的那两个文件加进去进行全部重建就可以了。在菜单栏-工程-添加到工程-文件 然后找到.CPP文件和.H文件添加。
     

    下面一些链接是讲这方面问题的。
    http://iask.sina.com.cn/b/12661950.html
    http://apps.hi.baidu.com/share/detail/17371227 

    如果你的问题仍存在,请你提供你的代码和更详细的信息。以便我们给予你更好更快的答案。
    如果你解决了问题,请把有用的回答标志为答案。

    谢谢!
    Lucy

    • 已标记为答案 鬼_ 2010年12月9日 15:10
    2010年12月9日 10:04
    版主

全部回复

  • 你确定DLL_B中没有引用这个函数么

    不是需不需要的问题

    你可以搜索一下看看是不是在哪不经意写了这个函数

    2010年12月8日 1:55
  • Hi 鬼,
    欢迎来MSDN论坛提问。

    根据我的了解,这个问题很可能是由以下情况导致。
     1.在你的程序中有些函数你只做了声明,没有定义!链接阶段,编译器找不到函数定义,所以报错
    一个函数声明如下:
    void foobar();
    一个函数的定义如下:
    void foobar()
    {
        // c++ code here
    }
    2.你的.CPP文件和.H文件没有进行编译。你直接在source files文件夹和header files文件夹里把对应的那两个文件加进去进行全部重建就可以了。在菜单栏-工程-添加到工程-文件 然后找到.CPP文件和.H文件添加。
     

    下面一些链接是讲这方面问题的。
    http://iask.sina.com.cn/b/12661950.html
    http://apps.hi.baidu.com/share/detail/17371227 

    如果你的问题仍存在,请你提供你的代码和更详细的信息。以便我们给予你更好更快的答案。
    如果你解决了问题,请把有用的回答标志为答案。

    谢谢!
    Lucy

    • 已标记为答案 鬼_ 2010年12月9日 15:10
    2010年12月9日 10:04
    版主