我正在将我的项目从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.
请帮帮我..提前谢谢..
答案 0 :(得分:5)
导致LNK2019的常见问题包括:
符号声明包含拼写错误,因此, 它与符号的定义名称不同。
使用了一个函数,但参数的类型或数量没有 匹配函数定义。
调用约定(__cdecl,__ stdcall或__fastcall)不同 使用函数声明和函数定义。
符号定义位于编译为C程序的文件中 符号在没有extern“C”修饰符的C ++文件中声明。在 那个案子,修改声明。
了解更多信息See Here
答案 1 :(得分: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()
也可能很重要。