在GitHub上搞了一个开源项目(Audacity)想自己玩玩,结果生成解决方案的时候出了几百条error link2019和2001

时间:2021-08-12 04:48:33
Audacity是一款音频软件,我按照里面的compile.txt文件搭建了wxWidgets,该做的都做了,但是它一直报错。
在GitHub上搞了一个开源项目(Audacity)想自己玩玩,结果生成解决方案的时候出了几百条error link2019和2001
如果对Audacity项目生成解决方案就会出现,上面图片右边的error link错误。
如果是对图片里画红圈的部分生成解决方案,则成功22个,失败一个,locale会报一个错。“E:\Documents\VS2012\audacity-Audacity-2.1.3\win\Projects\locale\po.targets(45,5): error MSB3721: 命令“msgfmt -o "E:\Documents\VS2012\audacity-Audacity-2.1.3\win\Debug\Languages\af\Audacity.mo"   ..\..\..\locale\af.po”已退出,返回代码为 1。”下图是这个错误的详情
在GitHub上搞了一个开源项目(Audacity)想自己玩玩,结果生成解决方案的时候出了几百条error link2019和2001

6 个解决方案

#1


针对所有的子项目我都添加了三个东西:1,附加包含目录,“C:\wxWidgets-3.0.2\include”;2,附加库目录,“C:\wxWidgets-3.0.2\lib\vc_lib”;3,附加依赖项,我是按照网上wxWidget环境搭建时添加的,链接在这 http://blog.csdn.net/shalyf/article/details/16826857/ 。第一张图中FileDialog.lib中报的其中一个error link2019是,“filedialog.lib(FileDialogPrivate.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: void __thiscall wxFileCtrlEvent::SetFiles(class wxArrayString const &)" (__imp_?SetFiles@wxFileCtrlEvent@@QAEXABVwxArrayString@@@Z),该符号在函数 "private: virtual void __thiscall FileDialog::MSWOnSelChange(struct HWND__ *,struct tagOFNW *)" (?MSWOnSelChange@FileDialog@@EAEXPAUHWND__@@PAUtagOFNW@@@Z) 中被引用”,是说函数SetFiles是未知的外部符号,该符号在函数MSWOnSelChange中被引用,我看了一下,SetFiles这个函数是在Audacity下的外部依赖项中的fileCtrl.h中被声明和定义的(定义声明在一起),filectrl.h这个文件在Audacity和filedialog中都是外部依赖项,我在总工程中搜索并没有找到他的定义文件,可能定义在wxWidgets的lib文件里,而MSWOnSelChange这个函数则定义在FileDialogPrivate.cpp中,FileDialogPrivate.h是Audacity的外部依赖项,FileDialogPrivate.cpp则在filedialog中定义,如图 在GitHub上搞了一个开源项目(Audacity)想自己玩玩,结果生成解决方案的时候出了几百条error link2019和2001

#2


求救啊啊,这个问题搞了我几天时间了,顺便说一下,楼主是个半吊子,只懂一些C++的语法,对于编译链接等等都不太了解,实际上对这个错误也看不太懂,“filedialog.lib(FileDialogPrivate.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: void __thiscall wxFileCtrlEvent::SetFiles(class wxArrayString const &)" (__imp_?SetFiles@wxFileCtrlEvent@@QAEXABVwxArrayString@@@Z),该符号在函数 "private: virtual void __thiscall FileDialog::MSWOnSelChange(struct HWND__ *,struct tagOFNW *)" (?MSWOnSelChange@FileDialog@@EAEXPAUHWND__@@PAUtagOFNW@@@Z) 中被引用”,我不知道是谁对SetFile这个符号不能识别,是filedialog.lib要链接其他库文件的时候其他文件不能识别还是filedialog.lib文件本身无法识别setfile,查资料给的几种思路:1,添加附加依赖项;2,添加#comment pregmma(这个我找不到往哪加);3,c和c++混编导致c无法调用c++中的函数;

#3


用dumpbin或dependency查看一下wxwidget中生成的dll中那个文件里面有你要的这个函数,把它加入到vs的链接库列表里面就行,用2中你说的那个方法添加到cpp文件里面就行,然后把lib库扔到当前项目目录里面或追加到库引用路径里面就行。

#4


引用 3 楼 zarelaky的回复:
用dumpbin或dependency查看一下wxwidget中生成的dll中那个文件里面有你要的这个函数,把它加入到vs的链接库列表里面就行,用2中你说的那个方法添加到cpp文件里面就行,然后把lib库扔到当前项目目录里面或追加到库引用路径里面就行。

但是这里无法识别的函数SetFile是直接在头文件filectrl.h里面定义的,filectrl.h貌似没有被任何lib文件包含,我在wxWidgets安装目录找到他了

#5


引用 3 楼 zarelaky的回复:
用dumpbin或dependency查看一下wxwidget中生成的dll中那个文件里面有你要的这个函数,把它加入到vs的链接库列表里面就行,用2中你说的那个方法添加到cpp文件里面就行,然后把lib库扔到当前项目目录里面或追加到库引用路径里面就行。

filectrl.h头文件我在相应的地方包含进去了,不过这个头文件的目录是include/wx/filectrl.h,我添加了附加包含目录include,包含filectrl.h的时候我用的是“#include<wx/filectrl.h>”不知道这样会不会有问题

#6


引用 3 楼 zarelaky的回复:
用dumpbin或dependency查看一下wxwidget中生成的dll中那个文件里面有你要的这个函数,把它加入到vs的链接库列表里面就行,用2中你说的那个方法添加到cpp文件里面就行,然后把lib库扔到当前项目目录里面或追加到库引用路径里面就行。

我这个总工程生成lib文件不会报错,但是生成dll文件就会报错

#1


针对所有的子项目我都添加了三个东西:1,附加包含目录,“C:\wxWidgets-3.0.2\include”;2,附加库目录,“C:\wxWidgets-3.0.2\lib\vc_lib”;3,附加依赖项,我是按照网上wxWidget环境搭建时添加的,链接在这 http://blog.csdn.net/shalyf/article/details/16826857/ 。第一张图中FileDialog.lib中报的其中一个error link2019是,“filedialog.lib(FileDialogPrivate.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: void __thiscall wxFileCtrlEvent::SetFiles(class wxArrayString const &)" (__imp_?SetFiles@wxFileCtrlEvent@@QAEXABVwxArrayString@@@Z),该符号在函数 "private: virtual void __thiscall FileDialog::MSWOnSelChange(struct HWND__ *,struct tagOFNW *)" (?MSWOnSelChange@FileDialog@@EAEXPAUHWND__@@PAUtagOFNW@@@Z) 中被引用”,是说函数SetFiles是未知的外部符号,该符号在函数MSWOnSelChange中被引用,我看了一下,SetFiles这个函数是在Audacity下的外部依赖项中的fileCtrl.h中被声明和定义的(定义声明在一起),filectrl.h这个文件在Audacity和filedialog中都是外部依赖项,我在总工程中搜索并没有找到他的定义文件,可能定义在wxWidgets的lib文件里,而MSWOnSelChange这个函数则定义在FileDialogPrivate.cpp中,FileDialogPrivate.h是Audacity的外部依赖项,FileDialogPrivate.cpp则在filedialog中定义,如图 在GitHub上搞了一个开源项目(Audacity)想自己玩玩,结果生成解决方案的时候出了几百条error link2019和2001

#2


求救啊啊,这个问题搞了我几天时间了,顺便说一下,楼主是个半吊子,只懂一些C++的语法,对于编译链接等等都不太了解,实际上对这个错误也看不太懂,“filedialog.lib(FileDialogPrivate.obj) : error LNK2019: 无法解析的外部符号 "__declspec(dllimport) public: void __thiscall wxFileCtrlEvent::SetFiles(class wxArrayString const &)" (__imp_?SetFiles@wxFileCtrlEvent@@QAEXABVwxArrayString@@@Z),该符号在函数 "private: virtual void __thiscall FileDialog::MSWOnSelChange(struct HWND__ *,struct tagOFNW *)" (?MSWOnSelChange@FileDialog@@EAEXPAUHWND__@@PAUtagOFNW@@@Z) 中被引用”,我不知道是谁对SetFile这个符号不能识别,是filedialog.lib要链接其他库文件的时候其他文件不能识别还是filedialog.lib文件本身无法识别setfile,查资料给的几种思路:1,添加附加依赖项;2,添加#comment pregmma(这个我找不到往哪加);3,c和c++混编导致c无法调用c++中的函数;

#3


用dumpbin或dependency查看一下wxwidget中生成的dll中那个文件里面有你要的这个函数,把它加入到vs的链接库列表里面就行,用2中你说的那个方法添加到cpp文件里面就行,然后把lib库扔到当前项目目录里面或追加到库引用路径里面就行。

#4


引用 3 楼 zarelaky的回复:
用dumpbin或dependency查看一下wxwidget中生成的dll中那个文件里面有你要的这个函数,把它加入到vs的链接库列表里面就行,用2中你说的那个方法添加到cpp文件里面就行,然后把lib库扔到当前项目目录里面或追加到库引用路径里面就行。

但是这里无法识别的函数SetFile是直接在头文件filectrl.h里面定义的,filectrl.h貌似没有被任何lib文件包含,我在wxWidgets安装目录找到他了

#5


引用 3 楼 zarelaky的回复:
用dumpbin或dependency查看一下wxwidget中生成的dll中那个文件里面有你要的这个函数,把它加入到vs的链接库列表里面就行,用2中你说的那个方法添加到cpp文件里面就行,然后把lib库扔到当前项目目录里面或追加到库引用路径里面就行。

filectrl.h头文件我在相应的地方包含进去了,不过这个头文件的目录是include/wx/filectrl.h,我添加了附加包含目录include,包含filectrl.h的时候我用的是“#include<wx/filectrl.h>”不知道这样会不会有问题

#6


引用 3 楼 zarelaky的回复:
用dumpbin或dependency查看一下wxwidget中生成的dll中那个文件里面有你要的这个函数,把它加入到vs的链接库列表里面就行,用2中你说的那个方法添加到cpp文件里面就行,然后把lib库扔到当前项目目录里面或追加到库引用路径里面就行。

我这个总工程生成lib文件不会报错,但是生成dll文件就会报错