none
为什么工程包含了头文件和库文件,还是"无法解析符号" RRS feed

  • 问题

  • 昨天,我看着MSDN上的示例,敲了一段DX的代码(绘制矩形)。但是编译的时候就会出现以下提示。

    error LNK2019: 无法解析的外部符号 _D2D1CreateFactory@16,该符号在函数 "long __cdecl D2D1CreateFactory(enum D2D1_FACTORY_TYPE,struct _GUID const &,void * *)" (?D2D1CreateFactory@@YAJW4D2D1_FACTORY_TYPE@@ABU_GUID@@PAPAX@Z) 中被引用 E:\Program\GdiInteropSample\GdiInteropSample.obj GdiInteropSample

      我本想,可能是我代码打得有问题,然后我又到MSDN下了一个示例源代码(和上面那个不一样)。下载下来之后,是一个工程,同样,我往工程属性里面添加DX的include目录和lib目录。所以我觉得应该是编译器设置或者是工程设置的问题了,希望大家帮我看看,如果需要代码,可以贴出来。
    2012年6月22日 8:43

答案

  • 你好!

    D2D1CreateFactory函数的定义所带的头文件和lib文件分别是D2d1.h,D2d1.lib。

    我建议你检查是否有D2d1.lib文件。如果没有D2d1.lib,请从另一太机器上拷贝一份,或者可以重新安装VS。

    如果有D2d1.lib,请参考下面的步骤:
    1-]查看 Project->Properties->Configuration Properties->Linker->General->Additional Library Directories,添加D2d1.lib的路径。
    2-]然后查看Project->Properties->Configuration Properties->Linker->Input->Additional Dependencies,确保D2d1.lib已添加。
    3-]在 Project->Properties->Configuration Properties->C/C++->General->Additional Include Directories to add additional include directories添加D2d1.h的路径。

    希望我的回复对你有所帮助!

    祝你好运!


    Helen Zhao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 Frank.crc 2012年6月27日 8:39
    2012年6月26日 6:32

全部回复

  • 确定在lib目录下的.lib二进制文件中能够找到对应的符号?


    麻烦把正确答案设为解答。

    2012年6月22日 9:10
    版主
  • 这个怎么看?
    2012年6月22日 10:17
  • 你好!

    D2D1CreateFactory函数的定义所带的头文件和lib文件分别是D2d1.h,D2d1.lib。

    我建议你检查是否有D2d1.lib文件。如果没有D2d1.lib,请从另一太机器上拷贝一份,或者可以重新安装VS。

    如果有D2d1.lib,请参考下面的步骤:
    1-]查看 Project->Properties->Configuration Properties->Linker->General->Additional Library Directories,添加D2d1.lib的路径。
    2-]然后查看Project->Properties->Configuration Properties->Linker->Input->Additional Dependencies,确保D2d1.lib已添加。
    3-]在 Project->Properties->Configuration Properties->C/C++->General->Additional Include Directories to add additional include directories添加D2d1.h的路径。

    希望我的回复对你有所帮助!

    祝你好运!


    Helen Zhao [MSFT]
    MSDN Community Support | Feedback to us

    • 已标记为答案 Frank.crc 2012年6月27日 8:39
    2012年6月26日 6:32
  • 很感谢,我检查过D2D1.lib文件,但是有两个地方存在这个文件,一个在Windows SDKs(应该是装vs的时候带的)中,一个我手动安装的dx文件夹中。第一个目录是vs中工程自带的,第二个目录我后来手动添加的,但是添加后仍然不能通过编译。意外的是,我把dx sdk给重新安装了一次,然后通过Release编译,编译通过了,然后我查看了Release中的工程设置,发现他里面并没有包含我安装的dx sdk的目录,然后我把Debug中的包含文件和库文件的目录改成和Release中一样的,最后通过编译了。

    最后还是很感谢你的回答:)。

    2012年6月27日 8:39