简体   繁体   中英

C++ GNU linker errors

I'm trying to compile my program on Windows via Cygwin with the compilation command:

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

I'm using an API called ChartDirector which draws charts for me. I've never linked libraries this way before (usually I do it through Visual Studio), so I'm a little new to this. I've got a really large list of errors, so I won't list them all, but I'll list one just to clarify the type of linker errors I'm getting:

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

All of these are undefined reference to 'xxx' errors.

I've got a bunch of header files in ./include and a library called chartdir50.lib in ./lib .

What's wrong with my compilation line?

I am not sure, but .lib have been compiled with Visual C++?

If yes, I don't think it's compatible with GCC. You have to compile the library with GCC/G++ and use that file or to use a compatible binary if you don't have access to the source.

I never use that library before, but when I googled it, I noticed that other people trying like -lchartdir instead of -lchartdir50 , so you should give it a try.

Hmm... that's odd. I'm using a 64-bit system, but for some reason I tried it with the 32-bit library and it compiled. Thanks!

I assume that library was also created with GCC.

As far as I know, .lib is a static library, so you don't have to point it with the -l compiler switch.

Just use it as another file on the command line, like

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM