日期:2014-05-16  浏览次数:20584 次

QT
我用的是Fedora   core6,当我用QT编程的时候,要引用一个动态链接库libcantrolcan.so文件里面的VCI_Close()函数,在QT工程里面加入了-L../liberary   -llibcontrolcan(其中/liberary表示当前工程文件夹下的文件夹),然后用qmake和make编译后提示undefined   reference   to "VCI_Close() "以及/usr/bin/ld   :connot   find   -llibcontrolcan我的头文件 "controlcan.h "已被加入到工程文件里面了,并且可以访问 "controlcan.h "里面的变量,但是就是不能访问里面的函数,哪位大虾知道怎么解决阿?      


------解决方案--------------------
.so文件只能动态加载,你引用的应该是.a文件,静态加载
------解决方案--------------------
如果libcantrolcan.so文件在你的../liberary 目录下的话应该是:
-L../liberary -lcontrolcan

如果在系统目录下就不用加路径-L../liberary了
------解决方案--------------------
SO是动态库..编译的时候只要有头文件.不需要要包括它.

估计你这个问题是,C++里面引用C的函数造成的..

头文件里加上extern "C "试一下..