我尝试编译一个我必须控制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代码。
任何提示?感谢
编辑:删除了一些标记,因为格式不正确
答案 0 :(得分:1)
在我的(有限)经验中,典型的gcc行为将要求您在命令行中将包含该函数的库指定为参数,如下所示:
-lsome_library
即使库位于库路径中,也需要这样做(可以使用-L指定其他库路径)。找到包含该函数的相应库文件,并使用其文件名减去扩展名并以上面的参数格式引导“lib”。