C ++ GNU链接器错误

时间:2009-11-27 06:06:32

标签: c++ linker g++ gnu linker-errors

我正在尝试使用编译命令通过Cygwin在Windows上编译我的程序:

g++ ping.cpp -I./include -L./lib -lchartdir50

我正在使用一个名为ChartDirector的API,它为我绘制图表。我之前从未以这种方式链接库(通常我是通过Visual Studio完成的),所以我对此有点新鲜。我有一个非常大的错误列表,所以我不会列出所有错误,但我会列出一个只是为了澄清我得到的链接器错误的类型:

(.text$_ZN9BaseChartD1Ev[BaseChart::~BaseChart()]+0x4f): undefined reference to '_CBaseChart_destroy'

所有这些都是对'xxx'错误的未定义引用。

我在./include中有一堆头文件,在./lib中有一个名为chartdir50.lib的库

我的编译线出了什么问题?

4 个答案:

答案 0 :(得分:1)

我不确定.lib是否已使用Visual C ++编译?

如果是,我不认为它与GCC兼容,您必须使用GCC / G ++编译库并使用该文件或使用兼容的二进制文件,如果您无权访问源。

答案 1 :(得分:1)

我之前从未使用过该库,但是当我googled时,我注意到其他人尝试 -lchartdir 而不是 -lchartdir50 ,所以你应该试一试。

答案 2 :(得分:1)

嗯......那很奇怪。我使用的是64位系统,但出于某种原因,我尝试使用32位库并进行编译。谢谢!

答案 3 :(得分:0)

我假设lib也是用gcc创建的。

AFAIK .lib是静态库,因此您不必使用-l编译器开关指向它。

只需在命令行中将其用作另一个文件,例如

g ++ ping.cpp -I./include -L./lib {lib path to here} /chartdir50.lib

第h