问题描述
我正在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库