gpt4 book ai didi

c++ - 在 C++ 中编译 C 库。链接问题。穆PDF

转载 作者:行者123 更新时间:2023-11-30 16:44:59 24 4
gpt4 key购买 nike

我尝试了多个 PDF 库,MUPDF 是我构建自己的小型 PDF 应用程序的最后机会。但我这里也有问题。在此之前,我遇到了 LNK4098: defaultlib 'MSVCRT' 问题,但我解决了这个问题,为所有 MUPDF 库/MDd 版本进行设置。大多数错误在那之后都得到了解决,但我仍然无法解决这个问题:

error LNK2001: unresolved external symbol "void __cdecl pdfapp_open(struct pdfapp_s *,char *,int)" (?pdfapp_open@@YAXPEAUpdfapp_s@@PEADH@Z)
//more 3 errors

当 MuPDF 用 C 编写时,我这样做:

extern "C" {
#include <pdfapp.h>
#include <mupdf\fitz\context.h>
}

但我收到此错误:

error LNK2001: unresolved external symbol pdfapp_open
//more 3 errors

我在我的应用程序中只使用了三个函数。我检查了库和 header 链接,我还设置了项目调试、x64、/MDd,但我得到了相同的结果。老实说,我在任何库中都找不到这三个函数。我不是编程专家,但我知道函数字符串应该在库中找到,不是吗?在我的例子中这个错误意味着什么?

最佳答案

您的链接器无法找到 mupdf 的导入库,或者您遇到名称修改/装饰类型问题。

下载并构建 mupdf 后,应该有一个导入库供您链接。您正在链接到它吗?查看链接器>>输入>>附加依赖项下的项目链接器设置。你添加了这样的导入吗?

如果没有,请将其添加进去。应该不难找到。它可能就在您下载(或构建)的 mupdf DLL 旁边。

假设您已添加它,下一步是验证您是否正确找到它。查看构建输出。您收到警告了吗?不,将链接器>>常规>>显示进度更改为“显示所有进度消息”并再次构建。是否有关于库或函数的警告?

我能想到的最后一种可能性是,DLL 实际上将其函数导出为 C++(即带有名称修饰),而不是 extern“C”。在这种情况下,您的外部“C”括号不属于那里。或者反之亦然(即,您可能未能在 #include 它的所有地方使用 extern "C")。我可以看到您的示例使用了它,但是所有地方都是这样吗?

如果您正在构建 mupdf.DLL,请确保它的构建方式和调用约定与您的客户端代码相同。

关于c++ - 在 C++ 中编译 C 库。链接问题。穆PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44289234/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com