4

我正在将我的项目从 VS 6 升级到 VS 2010,在发布模式下构建时,我遇到了以下错误。

 1>Creating library .\Release\JfFrpF32.lib and object .\Release\JfFrpF32.exp> 
 1>FLD_.obj : error LNK2019: unresolved external symbol __imp__debugf referenced in  function "int __cdecl fld_new(char *,unsigned char,unsigned char,short,char,char,unsigned char,short,char,double,double,short,char *,char,short,short)" (?fld_new@@YAHPADEEFDDEFDNNF0DFF@Z)
 1>Release/JfFrpF32.dll : fatal error LNK1120: 1 unresolved externals
 1>
 1>Build FAILED.

请帮助我..提前谢谢..

4

2 回答 2

5

导致 LNK2019 的常见问题包括:

  • 符号的声明包含拼写错误,因此它与符号的定义名称不同。

  • 使用了函数,但参数的类型或数量与函数定义不匹配。

  • 调用约定(__cdecl、__stdcall 或 __fastcall)在函数声明和函数定义的使用上有所不同。

  • 符号定义在编译为 C 程序的文件中,符号在没有 extern "C" 修饰符的 C++ 文件中声明。在这种情况下,请修改声明。

有关更多信息,请参见此处

于 2012-09-19T11:38:38.387 回答
1

就我而言,即使我使用extern "C"了 ,我也得到了未解决的符号错误。
hpp 是

extern "C"
{
class A
{
public:
    void hi();
};
A* a;
DECLDIR int Connect();
}//extern

而cpp是

#include "DatabasePlugin.hpp"// Include our header, must come after #define DLL_EXPORT


extern "C" // Get rid of name mangling
{   
    DECLDIR int Connect()
    {
        a = new A();
        a->hi();
        return 0;
    }//Connect
}//extern

问题是我没有为这个hi()函数创建一个实现。添加它解决了这个问题。像这样:

extern "C" // Get rid of name mangling
{   
    void A::hi() {}

    DECLDIR int Connect()
    {
        a = new A();
        a->hi();
        return 0;
    }//Connect
}//extern

Hi()必须事先声明Connect()也可能很重要。

于 2013-04-12T05:09:21.167 回答