G ++:链接器似乎没有正确链接

时间:2013-01-31 23:03:41

标签: linux linker g++

我尝试编译一个我必须控制DAQ设备的程序。在Windows中,g ++编译和链接正常,但在Linux中却没有。链接器(由G ++调用)显示:

g++ -Wall -o "acelerar-30-0" "acelerar-30-0.cpp" (en el directorio: /home/poly/)
/tmp/ccRLpB4q.o: In function `main':
acelerar-30-0.cpp:(.text+0x429): undefined reference to `AdxInstantAoCtrlCreate'
collect2: ld returned 1 exit status
Ha fallado la compilación.

cpp文件是这个(剪切):

include stdlib.h
include stdio.h
include math.h
include "compatibility.h"
include "bdaqctrl.h"
include "comunes.h"
using namespace Automation::BDaq;
define deviceDescription L"USB-4704,BID#0"
int32       channelStart = 0;
int32       channelCount = 1;
double      voltaje[0];
int32       modo;
int32       ms;
int main(int argc, char* argv[])
{
    if (argc!=3)
        salidaerror(argv[0],1);
    channelStart = atoi(argv[1]);
    ms = atoi(argv[2]);
    if (channelStart<0||channelStart>1||ms<10)
        salidaerror(argv[0],1);
    ErrorCode ret = Success;
    InstantAoCtrl * instantAoCtrl = AdxInstantAoCtrlCreate();
...

我已经好几个小时了,找不到答案。 SDK适用于Debian / Ubuntu,它具有相同的Linux和Windows代码。

任何提示?感谢

编辑:删除了一些标记,因为格式不正确

1 个答案:

答案 0 :(得分:1)

在我的(有限)经验中,典型的gcc行为将要求您在命令行中将包含该函数的库指定为参数,如下所示:

-lsome_library

即使库位于库路径中,也需要这样做(可以使用-L指定其他库路径)。找到包含该函数的相应库文件,并使用其文件名减去扩展名并以上面的参数格式引导“lib”。