【发布时间】:2013-02-12 20:52:33
【问题描述】:
我创建了一些简单的基本代码来说明我的问题。
header.h:
#ifdef __cplusplus
# define API extern "C"
#else
# define API
#endif
void callback();
API void libFunction();
testlib.c:
#include "header.h"
void libFunction()
{
Callback();
}
我把它编译成这样的静态库:
gcc -c testlib.c
ar rsc libtest.a testlib.o
那么我的示例 c++ 代码是
main.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
我花了一整天的时间试图找出原因。有人可以帮忙吗?
【问题讨论】: