-1

我尝试编译一个我必须控制 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 上具有相同的代码。

有什么提示吗?谢谢

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

4

1 回答 1

1

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

-lsome_library

即使库位于您的库路径中,这也是必需的(可以使用 -L 指定其他库路径)。找到包含该函数的适当库文件,并在上面的参数格式中使用其文件名减去扩展名和前导“lib”。

于 2013-02-01T01:39:15.820 回答