2014-01-31 2 views
2

Я пытаюсь написать небольшую программу на C/C++, которая как получает данные из NI USB DAQ, так и воспроизводит аудио с помощью PortAudio. Проблема заключается в том, что библиотека NI DAQ для Mac/Linux, DAQmxBase, должна быть построена под i386, и я просто не могу получить PortAudio для сборки для i386.Невозможно построить PortAudio для i386, чтобы заставить его играть хорошо с DAQmxBase от NI

Я попытался установить CFLAGS и LDFLAGS в -arch=i386 перед запуском ./configure --disable-mac-universal && make && make install, но пример кода NI DAQmxBase еще не будет строить, когда я добавить вызовы Portaudio к нему:

gcc -I../../includes -g -O2 -arch i386 acAnalogTest.c -framework nidaqmxbase -framework nidaqmxbaselv -o acAnalogTest 
Undefined symbols for architecture i386: 
     "_Pa_Initialize", referenced from: 
      _main in ccf1t0bz.o 
    ld: symbol(s) not found for architecture i386 
    collect2: ld returned 1 exit status 
    make: *** [acAnalogTest] Error 1 

Модуль NI DAQmxBase Makefile выглядит это:

nilibs=-framework nidaqmxbase -framework nidaqmxbaselv                
includes=-I../../includes 
flags= -g -O2 -arch i386 
cc=gcc 

ao_examples = acAnalogTest acquireNScans 
...... 
all : $(ao_examples) 

% : %.c 
>---$(cc) $(includes) $(flags) $< $(nilibs) -o [email protected] 

clean : 
>---rm -f $(ao_examples) 

Изменение -arch флага в DAQmxBase Makefile не работает:

gcc -I../../includes -g -O2 -arch x86_64 acAnalogTest.c -framework nidaqmxbase -framework nidaqmxbaselv -o acAnalogTest 
In file included from acAnalogTest.c:1: 
../../includes/NIDAQmxBase.h:104: warning: division by zero 
../../includes/NIDAQmxBase.h:104: error: enumerator value for ‘assert_line_104’ is not an integer constant 
../../includes/NIDAQmxBase.h:105: warning: division by zero 
../../includes/NIDAQmxBase.h:105: error: enumerator value for ‘assert_line_105’ is not an integer constant 
make: *** [acAnalogTest] Error 1 

Я предполагаю, что это потому, что DAQmxBase написан с учетом типов данных i386. Линии вышеприведенные ссылки ошибки из NIDAQmxBase.h являются:

NIStaticAssert(sizeof(long) == 4, "Error: This platform is unsupported because long is not 4 bytes.");    
NIStaticAssert(sizeof(int) == sizeof(long), "Error: This platform is unsupported because int is not the same size as long."); 

я могу построить некоторые из обычных примеров Portaudio сами по себе просто отлично, но я хочу поставить Portaudio и DAQmxBase в той же программе вместе и их ладить. Должен быть способ построить PortAudio, чтобы он работал с DAQmxBase, нет?

Спасибо!

ответ

0

DAQmx Базовые версии 14.0 и 15.0 поддерживают 64-битные приложения, поэтому теперь вы можете обновить драйвер и повторить попытку.

DAQmx Base 15.0 for Mac