2

我正在尝试使用编译命令通过 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

4 回答 4

1

嗯……这很奇怪。我使用的是 64 位系统,但由于某种原因,我尝试使用 32 位库并编译它。谢谢!

于 2009-11-27T08:34:37.570 回答
1

我不确定,但.lib已经用 Visual C++ 编译过?

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

于 2009-11-27T06:11:53.443 回答
1

我以前从未使用过那个库,但是当我用谷歌搜索它时,我注意到其他人尝试喜欢-lchartdir而不是-lchartdir50,所以你应该试一试。

于 2009-11-27T07:32:36.713 回答
0

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

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

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

g++ ping.cpp -I./include -L./lib {这里是lib的路径}/chartdir50.lib

hth。

于 2009-11-27T07:26:18.283 回答