我创建了一些简单的基本代码来说明我的问题。
标头.h:
#ifdef __cplusplus
# define API extern "C"
#else
# define API
#endif
void callback();
API void libFunction();
测试库.c:
#include "header.h"
void libFunction()
{
Callback();
}
我将其编译为静态库,如下所示:
gcc -c testlib.c
ar rsc libtest.a testlib.o
然后我的示例 C++ 代码是
主.cpp:
extern "C"{
#include <lib/header.h>
}
#include <stdio.h>
main()
{
libFunction();
}
void Callback()
{
printf("Callback is called \n");
}
我尝试像这样构建我的exe
g++ -I. -L. main.cpp -ltest
并得到以下错误
./lib/libtest.a(testlib.o): In function `libFunction':
testlib.c:(.text+0x7): undefined reference to `Callback'
collect2: ld returned 1 exit status
我花了一整天的时间试图找出原因。有人可以帮忙吗?