提问人:SciFlyGal 提问时间:12/31/2022 更新时间:1/3/2023 访问量:154
在 VS 2022 中编译 exiv2 代码时出现问题:未定义的引用/符号错误
Problem compiling exiv2 code in VS 2022: Undefined Reference/symbol error
问:
我在 Linux 中有一些代码,它使用 exiv2 读取装满照片的文件夹的元数据,根据要求,它可以重建丢失的元数据,并在照片上印上徽标和纬度/经度。我正在尝试将其移植到 Windows Visual Studio 中,以便我可以制作 GUI 并让其他人使用它。
我下载了 exiv2 的 MSVS 源代码,我在项目属性对话框的 include 行和链接器行中都添加了 include 文件夹和 lib 文件夹。当我尝试编译时,每当调用 EXIV2 对象时,我都会收到未定义的引用错误。
我猜我有某种链接或库建设问题。我使用 g++ 在 linux 上构建了它,没有任何问题。如果我不尝试制作 GUI,我可能会得到一个 Windows 版本的 g++ 来编译。
这是我收到的错误消息之一。
严重性代码说明 项目文件行抑制状态 错误LNK2019未解析的外部符号“__declspec(dllimport) public: class std::_List_iterator<class std::_List_val<struct std::_List_simple_types > > __thiscall Exiv2::ExifData::begin(void)” (_imp?begin@ExifData@Exiv2@@QAE?AV?$_List_iterator@V?$_List_val@U?$_List_simple_types@VExifdatum@Exiv2@@@std@@@std@@@std@@XZ) 在函数“int __cdecl uptake(class std::vector<struct EANphoto,class std::allocator > &,char *,char *)” (?uptake@@YAHAAV?$vector@UEANphoto@@V?$allocator@UEANphoto@@@std@@@std@@PAD1@Z) CAPconsole C:\Users\ [已编辑] \source\repos\CAPconsole\CAPconsole.obj 1
我尝试将“include”和“lib”文件夹的包含文件添加到包含行和链接器中。我还尝试编译 Exiv2 附带的示例程序,但出现相同的错误,所以我猜这是 VS 设置问题。
答:
因此,执行此操作的方法如下:
在“属性”中......“C/C++” ...“将军”......“Additional Include Directories”,添加 include 和 lib 文件夹,然后在 “链接器”......“其他库目录”。
最后,在“链接器”中......“命令行”......“附加选项”,写在“exiv2.lib”中。
评论