在Visual C ++应用程序中添加外部C库-“错误LNK2028”和“错误LNK2019”

问题描述

我正在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);
    }

// [...]

我有以下两个错误

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 *,class System::EventArgs ^)" (?button1_Click@MyForm@TestEDF@@$$FA$AAMXP$AAVObject@System@@P$AAVEventArgs@4@@Z)

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

谢谢。

解决方法

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

,

您应提供外部“ C”方法并将库添加到其中,然后检查

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

您不能在外部使用C ++添加C库