1>test.obj : error LNK2001: 无法解析的外部符号 "int __cdecl _sift_features(struct _IplImage *,struct feature * *,int,double,double,int,int,int,int)" (?_sift_features@@YAHPAU_IplImage@@PAPAUfeature@@HNNHHHH@Z)
1>D:\cpp\Test\Release\test.dll : fatal error LNK1120: 1 个无法解析的外部命令
========== 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 ==========
说无法解析的外部符号,其实是有声明和定义的。声明在引入的头文件里,而定义在相同目录下的.c文件里。实在看不出来有什么问题,如何解决呢?
6 个解决方案
#1
是不是没有指定库文件的路径,或者少了库文件
#2
你的定义是在相同目录下的.c文件里?
1.如果你是自己编译链接的,检查_sift_features这个函数的定义和实现是否一致(比如参数个数,类型,函数名是否拼写错误)
2.如果用的IDE(比如VS),检查是否将.c文件添加到工程中了
3.如果实现是在.lib里(检查附加库目录,附加依赖项)
1.如果你是自己编译链接的,检查_sift_features这个函数的定义和实现是否一致(比如参数个数,类型,函数名是否拼写错误)
2.如果用的IDE(比如VS),检查是否将.c文件添加到工程中了
3.如果实现是在.lib里(检查附加库目录,附加依赖项)
#3
链接器链接时找不到XXX函数的具体实现,如果这个函数不是自己实现的函数,通常需要将依赖的库文件添加到项目设置中。
具体位置在:项目属性——链接器——输入——附加依赖项
具体位置在:项目属性——链接器——输入——附加依赖项
#4
1)这个函数不存在,编译器找不到定义
2)这个函数有不止一份实现,出现二义性,编译器难以推断,该链接哪一份代码
2)这个函数有不止一份实现,出现二义性,编译器难以推断,该链接哪一份代码
#5
这个问题和i++问题一样月经。
#6
话说,因为存在二义性,而没有编译的代码。连接也会出错的
#1
是不是没有指定库文件的路径,或者少了库文件
#2
你的定义是在相同目录下的.c文件里?
1.如果你是自己编译链接的,检查_sift_features这个函数的定义和实现是否一致(比如参数个数,类型,函数名是否拼写错误)
2.如果用的IDE(比如VS),检查是否将.c文件添加到工程中了
3.如果实现是在.lib里(检查附加库目录,附加依赖项)
1.如果你是自己编译链接的,检查_sift_features这个函数的定义和实现是否一致(比如参数个数,类型,函数名是否拼写错误)
2.如果用的IDE(比如VS),检查是否将.c文件添加到工程中了
3.如果实现是在.lib里(检查附加库目录,附加依赖项)
#3
链接器链接时找不到XXX函数的具体实现,如果这个函数不是自己实现的函数,通常需要将依赖的库文件添加到项目设置中。
具体位置在:项目属性——链接器——输入——附加依赖项
具体位置在:项目属性——链接器——输入——附加依赖项
#4
1)这个函数不存在,编译器找不到定义
2)这个函数有不止一份实现,出现二义性,编译器难以推断,该链接哪一份代码
2)这个函数有不止一份实现,出现二义性,编译器难以推断,该链接哪一份代码
#5
这个问题和i++问题一样月经。
#6
话说,因为存在二义性,而没有编译的代码。连接也会出错的