连接第三方静态库德问题? Topic is solved

这是wxWidgets论坛的中文版本。在这里,您可以用您的母语汉语讨论上面任一子论坛所涉及的所有关于wxWidgets的话题。欢迎大家参与到对有价值的帖子的中英互译工作中来!
Post Reply
spritez
Earned a small fee
Earned a small fee
Posts: 21
Joined: Sat Apr 19, 2008 2:16 pm
Location: china

连接第三方静态库德问题?

Post by spritez » Thu Jun 05, 2008 9:48 am

我的程序调用了USB厂商提供的程序库,包括一个xxx.h的文件和一个xxx.lib的文件。我尝试使用 -lxxx 将这个库连接进我的工程,但却报错说我所调用的函数是undefined reference :(

我以前使用另一个公司的动态库,含有yyy.h,yyy.lib和yyy.dll。是动态库,我用上述方法连接成功。运行时需要yyy.dll,但,现在应该使用的是静态库了,不知道我应该使用什么方式连接这个文件。

谁有此方面的经验吗?谢谢指导一下。 :D
*** china ***

Utensil
Moderator
Moderator
Posts: 423
Joined: Sun Feb 03, 2008 11:38 am
Location: China

Post by Utensil » Thu Jun 05, 2008 4:25 pm

xxx.lib看起来像VC的库文件,但你的-lxxx看起来像gcc的选项,意味着libxxx.a。可能是这个问题。

你用的是什么编译器?

-Utensil
In fascination of creating worlds by words, and in pursuit of words behind the world.

On Github: http://utensil.github.com
Technical Blog in Chinese: http://utensil.iteye.com/

spritez
Earned a small fee
Earned a small fee
Posts: 21
Joined: Sat Apr 19, 2008 2:16 pm
Location: china

Post by spritez » Fri Jun 06, 2008 1:19 am

是的,那个库文件确实是给VC6-VC7用的,厂商还提供了一个给BCB用的库文件。我用的是MinGW下的gcc做编译器,并编辑makefile文件进行编译。

之前我在同样的环境下使用过另一个厂商的库文件,也是xxx.lib,我也是用-lxxx连接的,没有问题。但那个库是动态库,最终文件运行时还需要xxx.dll的支持。

MinGW下可以使用VC的库吗?如果不能使用,有没有什么变通的方案?我太喜欢gnu的东西了。 :D
*** china ***

liuqi5521
Earned some good credits
Earned some good credits
Posts: 103
Joined: Thu Apr 03, 2008 5:35 am
Location: China
Contact:

Post by liuqi5521 » Sat Jun 07, 2008 8:25 am

MinGW下可不可以使用VC的库我还不太清楚。因为以前没有碰到过,也没有做过类似的实验。

但是变通的方法绝对是有的,你大可以放宽心。

比如说:你可以用VC作一个动态链接库,在这里面静态链接厂商的lib ,等于做一个包装。

spritez
Earned a small fee
Earned a small fee
Posts: 21
Joined: Sat Apr 19, 2008 2:16 pm
Location: china

Post by spritez » Tue Jun 10, 2008 2:13 am

这几天又在网上查了一下,有些新的启示.我将静态库的符号表用dumpbin导出,发现没有我调用的函数。我调用的是C++的类的成员函数。不知道是否对于类的成员函数的调用GCC和MSVC差别很大?

关于转换为dll动态库的方式,工作量也很大,因为,那是个非常庞大的类。虽然可以通过转换几个调用到的函数来减轻工作量,但也不是长久之计。这个议题我先暂时放弃吧,如果有新的进展,我会贴在这里。

谢谢诸位。
*** china ***

spritez
Earned a small fee
Earned a small fee
Posts: 21
Joined: Sat Apr 19, 2008 2:16 pm
Location: china

Post by spritez » Fri Jun 13, 2008 8:22 am

使用LibUSB替代了那个库,开源真好....
*** china ***

Utensil
Moderator
Moderator
Posts: 423
Joined: Sun Feb 03, 2008 11:38 am
Location: China

Post by Utensil » Fri Jun 13, 2008 3:15 pm

不同编译器编译出来的库的binary级的兼容,估计是相当难的...所幸楼主已经找到了开源的相应库,开源的东西最好用...:D

-Utensil
In fascination of creating worlds by words, and in pursuit of words behind the world.

On Github: http://utensil.github.com
Technical Blog in Chinese: http://utensil.iteye.com/

Post Reply