【问题标题】:Add External C Library in a Visual C++ Application - "Error LNK2028" & "Error LNK2019"在 Visual C++ 应用程序中添加外部 C 库 - “错误 LNK2028”和“错误 LNK2019”
【发布时间】:2021-01-17 07:17:16
【问题描述】:

我正在 Visual Studio 2019 中开发 C++ Windows 窗体应用程序。

我想使用外部库 EDFlib 的一些功能。 EDFlib 是一个 C/C++ 编程库,它只包含两个文件(.c 和 .h)。

这里是一个简单的代码,当我点击一个按钮时,它会在 EDF 文件中写入数据:

#include "edflib.h"

// [...]

    private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e)
    {
        double buf[200];
        for (int i = 0; i < 200; i++)
            buf[i] = i;

        int hdl;
        hdl = edfopen_file_writeonly("test.edf", EDFLIB_FILETYPE_EDFPLUS, 1);
        
        // [...]

        edfwrite_physical_samples(hdl, buf);
        edfclose_file(hdl);
    }

// [...]

我有以下 2 个错误:

Erreur  LNK2028 jeton non résolu (0A000038) "extern "C" int __cdecl edfopen_file_writeonly(char const *,int,int)" (?edfopen_file_writeonly@@$$J0YAHPBDHH@Z) référencé dans la fonction "private: void __clrcall TestEDF::MyForm::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@MyForm@TestEDF@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)
&
Erreur  LNK2019 symbole externe non résolu "extern "C" int __cdecl edfopen_file_writeonly(char const *,int,int)" (?edfopen_file_writeonly@@$$J0YAHPBDHH@Z) référencé dans la fonction "private: void __clrcall TestEDF::MyForm::button1_Click(class System::Object ^,class System::EventArgs ^)" (?button1_Click@MyForm@TestEDF@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)

我尝试阅读有关这些错误的文档。 但我不是 C/C++ 专家。我不知道该怎么办。我需要一些帮助。

谢谢。

【问题讨论】:

    标签: c++ c visual-c++ linker


    【解决方案1】:

    我猜测错误状态是您有未解析的符号, 这意味着您正在调用具有声明的函数(来自#include“edflib.h”),链接器试图在构建过程中找到但没有定义。 似乎您只是包含了库的标题,但您还需要链接它。 我不知道您使用什么 IDE,但您应该查看如何将库链接到 C++ 中的项目。 有很多关于在线创建和链接库的信息可以帮助您解决这个问题。

    【讨论】:

      【解决方案2】:

      你应该给Extern "C" 方法并把库添加进去,检查

      https://isocpp.org/wiki/faq/mixing-c-and-cpp

      您不能在 C++ 中从外部添加 C 库

      【讨论】:

        猜你喜欢
        • 2013-01-04
        • 1970-01-01
        • 1970-01-01
        • 2012-07-05
        • 2023-03-27
        • 2012-02-09
        • 1970-01-01
        • 2013-07-20
        • 2015-07-08
        相关资源
        最近更新 更多