【问题标题】:Error in Visual StudioVisual Studio 中的错误
【发布时间】:2009-11-06 17:37:51
【问题描述】:

我在 Visual Studio 中收到此错误,但我不知道原因。它甚至不显示行号。有什么线索吗?

错误 1 ​​错误 LNK2028:未解决 令牌(0A000041)“无效__cdecl free_img(结构图像 *)" (?free_img@@$$FYAXPAUImage@@@Z) 在函数“double *”中引用 __cdecl calc_zernike_moments(struct Image const *,int,struct ZernikeBasis 常量 *)" (?calc_zernike_moments@@$$FYAPNPBUImage@@HPBUZernikeBasis@@@Z) zernike_moments.obj 测试库

【问题讨论】:

    标签: c++ visual-studio


    【解决方案1】:

    你有一个例程

    double * __cdecl calc_zernike_moments(struct Image const *foo,
                                          int baz,
                                          struct ZernikeBasis const *bar)
    

    调用例程

    void __cdecl free_img(struct Image *foo)
    

    并且您没有提供与链接器匹配的 free_img() 例程。

    【讨论】:

      【解决方案2】:

      free_img() 是一个在项目中未包含的 .cpp 文件中定义的函数,或者在您未链接的 DLL 或静态库中定义的函数。如果是前者,则需要在源文件中搜索该函数,然后将该 .cpp 文件添加到项目中。如果是后者,那么您需要确定哪个库提供了 free_img(),然后找到该库的 .lib 文件。然后你可以这样做:

      在开发环境中添加 .lib 文件作为链接器输入

      1. 打开项目的“属性页”对话框。有关详细信息,请参阅设置 Visual C++ 项目属性。
      2. 单击链接器文件夹。
      3. 单击“输入”属性页。
      4. 修改附加依赖属性。 (来自http://msdn.microsoft.com/en-us/library/ba1z7822(VS.80).aspx

      【讨论】:

        【解决方案3】:

        您需要链接库。 free_img() 的定义在哪里? 你只是包括 .h 而不是链接 lib

        【讨论】:

          【解决方案4】:

          该错误是链接器错误,而不是编译器错误,因此不会有与之关联的行号。相反,错误告诉您您的函数calc_zernike_moments 正在调用另一个例程free_img,该例程未在TestLibrary 的任何编译源中定义,因此您需要通过其他方式提供它。通常这里缺少的是第三方库需要包含在项目中,以便链接器可以引入free_img 的实现。

          【讨论】:

            猜你喜欢
            • 2020-02-05
            • 2011-06-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-02-10
            相关资源
            最近更新 更多