【发布时间】:2016-11-20 15:35:34
【问题描述】:
我正在尝试从 C++ 调用 C 代码。我有 3 个文件:pubsub.cpp、pubsublib.c 和 pubsublib.h。 我知道我必须使用 extern "C" 才能从 C++ 调用 C 函数。 我已经尝试了所有方法,但仍然收到以下 LNK2019 未解决的外部符号错误:
LNK2019 中引用的未解析外部符号 _thisIsATestFunction 函数_main
pubsublib.c
#include "pubsublib.h"
void thisIsATestFunction()
{
// do something
}
pubsublib.h
#ifndef pubsublib_H
#define pubsublib_H
void thisIsATestFunction();
#endif
pubsub.cpp
#include <string>
#include <iostream>
#ifdef __cplusplus
extern "C"{
#endif
#include "pubsublib.h"
#ifdef __cplusplus
}
#endif
using namespace std;
int main() {
thisIsATestFunction();
return 0;
}
我也尝试只包含这些功能,但我遇到了同样的错误。我现在真的很迷茫并且搜索了很多......任何帮助将不胜感激。
【问题讨论】:
-
发布错误。
-
LNK2019 未解析的外部符号 _thisIsATestFunction 在函数 _main 中引用
-
C++ 编译器可能会对原型
void thisIsATestFunction();感到困惑,因为它表示它可以接受任意数量的参数,而 C++ 通常希望使用参数信息来装饰函数名称,以便能够解决模棱两可的调用.请尝试:void thisIsATestFunction(void); -
我编辑了您的问题以添加错误信息。未来,我们需要知道的一切都应该在问题中,而不是 cmets。
-
我们仍然需要知道您是如何编译和链接这两个文件的(例如:您使用的确切命令)
标签: c++ c visual-c++ lnk2019