Zugang zu USB über Python
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Du musst schon richtig zitieren, damit es Sinn macht:Toni83 hat geschrieben:Das SWIG muss im %PATH% sein, damit die distutils die afair findet?
Da heißt: wenn das "Simplified Wrapper and Interface Generator"-Binary (in deinem Fall swig.exe) in einem Ordner ist der in der Umgebungsvariable %PATH% gespeichert ist gefunden wird, dann finden as far as I recall (Slang) die Python distutils dieses Programm und können es verwenden, ohne zusätzliche Konfiguration zu benötigen.Leonidas hat geschrieben:Wenn SWIG im %PATH% ist, dann findet distutils die afair von selbst.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Servus,
habe gestern noch Visual Studio 6.0 auf meinem Rechner installiert, wie Python es benötigt. Zusätzlich habe ich auch noch SWIG installiert und beides als Systemvariablen deklariert.
Nun geht das ganze schon ein ganzes Stück weiter, allerdings treten immer noch Fehler auf:
D:\Python23>python setup.py build
running build
running build_py
copying nidaq.py -> build\lib.win32-2.3
running build_ext
building '_nidaq' extension
swigging nidaq.i to nidaq_wrap.c
D:\Programme\swigwin-1.3.29\swig.exe -python -o nidaq_wrap.c nidaq.i
nidaq.i(37): Warning(118): %typemap(except) is deprecated. Use the %exception di
rective.
D:\Programme\Microsoft Visual Studio\VC98\BIN\cl.exe /c /nologo /Ox /MD /W3 /GX
/DNDEBUG -I. "-ID:/Programme/National Instruments/NI-DAQ/DAQmx ANSI C Dev/includ
e" -ID:\Python23\include -ID:\Python23\PC /Tcnidaq_wrap.c /Fobuild\temp.win32-2.
3\Release\nidaq_wrap.obj
nidaq_wrap.c
nidaq_wrap.c(2479) : fatal error C1083: Cannot open include file: 'Numeric/array
object.h': No such file or directory
error: command '"D:\Programme\Microsoft Visual Studio\VC98\BIN\cl.exe"' failed w
ith exit status 2
Soviel ich sehen kann fehlt die object.h, oder er kann diese nicht finden. Soviel ich noch von der C-Programmierung weiss, ist object.h eines der Standardbibliotheken.
Was ist da falsch? Und was bedeutet "failed with exit status 2"?
Gruss,
Toni
habe gestern noch Visual Studio 6.0 auf meinem Rechner installiert, wie Python es benötigt. Zusätzlich habe ich auch noch SWIG installiert und beides als Systemvariablen deklariert.
Nun geht das ganze schon ein ganzes Stück weiter, allerdings treten immer noch Fehler auf:
D:\Python23>python setup.py build
running build
running build_py
copying nidaq.py -> build\lib.win32-2.3
running build_ext
building '_nidaq' extension
swigging nidaq.i to nidaq_wrap.c
D:\Programme\swigwin-1.3.29\swig.exe -python -o nidaq_wrap.c nidaq.i
nidaq.i(37): Warning(118): %typemap(except) is deprecated. Use the %exception di
rective.
D:\Programme\Microsoft Visual Studio\VC98\BIN\cl.exe /c /nologo /Ox /MD /W3 /GX
/DNDEBUG -I. "-ID:/Programme/National Instruments/NI-DAQ/DAQmx ANSI C Dev/includ
e" -ID:\Python23\include -ID:\Python23\PC /Tcnidaq_wrap.c /Fobuild\temp.win32-2.
3\Release\nidaq_wrap.obj
nidaq_wrap.c
nidaq_wrap.c(2479) : fatal error C1083: Cannot open include file: 'Numeric/array
object.h': No such file or directory
error: command '"D:\Programme\Microsoft Visual Studio\VC98\BIN\cl.exe"' failed w
ith exit status 2
Soviel ich sehen kann fehlt die object.h, oder er kann diese nicht finden. Soviel ich noch von der C-Programmierung weiss, ist object.h eines der Standardbibliotheken.
Was ist da falsch? Und was bedeutet "failed with exit status 2"?
Gruss,
Toni
Habe jetzt die Numeric Bibliothek für Python installiert.
Nachdem ich sämtliche Bibliotheken von National Instruments eingefügt habe, die setup.py benötigt, kamen Probleme beim linken:
D:\Python23>python setup.py build
running build
running build_py
copying nidaq.py -> build\lib.win32-2.3
running build_ext
building '_nidaq' extension
swigging nidaq.i to nidaq_wrap.c
D:\Programme\swigwin-1.3.29\swig.exe -python -o nidaq_wrap.c nidaq.i
nidaq.i(37): Warning(118): %typemap(except) is deprecated. Use the %exception di
rective.
D:\Programme\Microsoft Visual Studio\VC98\BIN\cl.exe /c /nologo /Ox /MD /W3 /GX
/DNDEBUG -I. "-ID:/Programme/National Instruments/NI-DAQ/DAQmx ANSI C Dev/includ
e" -ID:\Python23\include -ID:\Python23\PC /Tcnidaq_wrap.c /Fobuild\temp.win32-2.
3\Release\nidaq_wrap.obj
nidaq_wrap.c
nidaq_wrap.c(2865) : warning C4013: 'AI_Check' undefined; assuming extern return
ing int
nidaq_wrap.c(2907) : warning C4013: 'AI_Clear' undefined; assuming extern return
ing int
nidaq_wrap.c(2982) : warning C4013: 'AI_Configure' undefined; assuming extern re
turning int
nidaq_wrap.c(3034) : warning C4013: 'AI_Read' undefined; assuming extern returni
ng int
nidaq_wrap.c(3085) : warning C4013: 'AI_Read_Scan' undefined; assuming extern re
turning int
nidaq_wrap.c(3133) : warning C4013: 'AI_Setup' undefined; assuming extern return
ing int
nidaq_wrap.c(3185) : warning C4013: 'AI_VRead' undefined; assuming extern return
ing int
nidaq_wrap.c(3236) : warning C4013: 'AI_VRead_Scan' undefined; assuming extern r
eturning int
nidaq_wrap.c(3315) : warning C4013: 'AI_VScale' undefined; assuming extern retur
ning int
nidaq_wrap.c(3396) : warning C4013: 'AO_Configure' undefined; assuming extern re
turning int
nidaq_wrap.c(3426) : warning C4013: 'AO_Update' undefined; assuming extern retur
ning int
nidaq_wrap.c(3478) : warning C4013: 'AO_VScale' undefined; assuming extern retur
ning int
nidaq_wrap.c(3532) : warning C4013: 'AO_VWrite' undefined; assuming extern retur
ning int
nidaq_wrap.c(3580) : warning C4013: 'AO_Write' undefined; assuming extern return
ing int
nidaq_wrap.c(3618) : warning C4013: 'DAQ_Check' undefined; assuming extern retur
ning int
nidaq_wrap.c(3660) : warning C4013: 'DAQ_Clear' undefined; assuming extern retur
ning int
nidaq_wrap.c(3702) : warning C4013: 'DAQ_Config' undefined; assuming extern retu
rning int
nidaq_wrap.c(3741) : warning C4013: 'DAQ_DB_Config' undefined; assuming extern r
eturning int
nidaq_wrap.c(3779) : warning C4013: 'DAQ_DB_HalfReady' undefined; assuming exter
n returning int
nidaq_wrap.c(3846) : warning C4013: 'DAQ_DB_Transfer' undefined; assuming extern
returning int
nidaq_wrap.c(3942) : warning C4013: 'DAQ_Monitor' undefined; assuming extern ret
urning int
nidaq_wrap.c(4033) : warning C4013: 'DAQ_Op' undefined; assuming extern returnin
g int
nidaq_wrap.c(4081) : warning C4013: 'DAQ_Rate' undefined; assuming extern return
ing int
nidaq_wrap.c(4169) : warning C4013: 'DAQ_Start' undefined; assuming extern retur
ning int
nidaq_wrap.c(4217) : warning C4013: 'DAQ_StopTrigger_Config' undefined; assuming
extern returning int
nidaq_wrap.c(4304) : warning C4013: 'DAQ_to_Disk' undefined; assuming extern ret
urning int
nidaq_wrap.c(4351) : warning C4013: 'Get_DAQ_Device_Info' undefined; assuming ex
tern returning int
nidaq_wrap.c(4382) : warning C4013: 'Get_NI_DAQ_Version' undefined; assuming ext
ern returning int
nidaq_wrap.c(4422) : warning C4013: 'Init_DA_Brds' undefined; assuming extern re
turning int
nidaq_wrap.c(4535) : warning C4013: 'SCAN_Op' undefined; assuming extern returni
ng int
nidaq_wrap.c(4618) : warning C4013: 'SCAN_Setup' undefined; assuming extern retu
rning int
nidaq_wrap.c(4714) : warning C4013: 'SCAN_Start' undefined; assuming extern retu
rning int
nidaq_wrap.c(4831) : warning C4013: 'SCAN_to_Disk' undefined; assuming extern re
turning int
nidaq_wrap.c(4886) : warning C4013: 'Timeout_Config' undefined; assuming extern
returning int
nidaq_wrap.c(4934) : warning C4013: 'WFM_Chan_Control' undefined; assuming exter
n returning int
nidaq_wrap.c(4985) : warning C4013: 'WFM_Check' undefined; assuming extern retur
ning int
nidaq_wrap.c(5078) : warning C4013: 'WFM_ClockRate' undefined; assuming extern r
eturning int
nidaq_wrap.c(5159) : warning C4013: 'WFM_DB_Config' undefined; assuming extern r
eturning int
nidaq_wrap.c(5223) : warning C4013: 'WFM_DB_HalfReady' undefined; assuming exter
n returning int
nidaq_wrap.c(5309) : warning C4013: 'WFM_DB_Transfer' undefined; assuming extern
returning int
nidaq_wrap.c(5419) : warning C4013: 'WFM_from_Disk' undefined; assuming extern r
eturning int
nidaq_wrap.c(5477) : warning C4013: 'WFM_Group_Control' undefined; assuming exte
rn returning int
nidaq_wrap.c(5540) : warning C4013: 'WFM_Group_Setup' undefined; assuming extern
returning int
nidaq_wrap.c(5636) : warning C4013: 'WFM_Load' undefined; assuming extern return
ing int
nidaq_wrap.c(5734) : warning C4013: 'WFM_Op' undefined; assuming extern returnin
g int
nidaq_wrap.c(5789) : warning C4013: 'WFM_Rate' undefined; assuming extern return
ing int
nidaq_wrap.c(5871) : warning C4013: 'WFM_Set_Clock' undefined; assuming extern r
eturning int
nidaq_wrap.c(6050) : warning C4013: 'Config_DAQ_Event_Message' undefined; assumi
ng extern returning int
D:\Programme\Microsoft Visual Studio\VC98\BIN\link.exe /DLL /nologo /INCREMENTAL
:NO "/LIBPATH:D:\Programme\National Instruments\NI-DAQ\DAQmx ANSI C Dev\lib" /LI
BPATH:D:\Python23\libs /LIBPATH:D:\Python23\PCBuild nidaq32.lib nidex32.lib /EXP
ORT:init_nidaq build\temp.win32-2.3\Release\nidaq_wrap.obj /OUT:build\lib.win32-
2.3\_nidaq.pyd /IMPLIB:build\temp.win32-2.3\Release\_nidaq.lib
Creating library build\temp.win32-2.3\Release\_nidaq.lib and object build\tem
p.win32-2.3\Release\_nidaq.exp
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AI_Check
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AI_Clear
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AI_Configure
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AI_Read
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AI_Read_Scan
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AI_Setup
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AI_VRead
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AI_VRead_Scan
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AI_VScale
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AO_Configure
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AO_Update
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AO_VScale
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AO_VWrite
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AO_Write
nidaq_wrap.obj : error LNK2001: unresolved external symbol _DAQ_Check
nidaq_wrap.obj : error LNK2001: unresolved external symbol _DAQ_Clear
nidaq_wrap.obj : error LNK2001: unresolved external symbol _DAQ_Config
nidaq_wrap.obj : error LNK2001: unresolved external symbol _DAQ_DB_Config
nidaq_wrap.obj : error LNK2001: unresolved external symbol _DAQ_DB_HalfReady
nidaq_wrap.obj : error LNK2001: unresolved external symbol _DAQ_DB_Transfer
nidaq_wrap.obj : error LNK2001: unresolved external symbol _DAQ_Monitor
nidaq_wrap.obj : error LNK2001: unresolved external symbol _DAQ_Op
nidaq_wrap.obj : error LNK2001: unresolved external symbol _DAQ_Rate
nidaq_wrap.obj : error LNK2001: unresolved external symbol _DAQ_Start
nidaq_wrap.obj : error LNK2001: unresolved external symbol _DAQ_StopTrigger_Conf
ig
nidaq_wrap.obj : error LNK2001: unresolved external symbol _DAQ_to_Disk
nidaq_wrap.obj : error LNK2001: unresolved external symbol _Get_DAQ_Device_Info
nidaq_wrap.obj : error LNK2001: unresolved external symbol _Get_NI_DAQ_Version
nidaq_wrap.obj : error LNK2001: unresolved external symbol _Init_DA_Brds
nidaq_wrap.obj : error LNK2001: unresolved external symbol _SCAN_Op
nidaq_wrap.obj : error LNK2001: unresolved external symbol _SCAN_Setup
nidaq_wrap.obj : error LNK2001: unresolved external symbol _SCAN_Start
nidaq_wrap.obj : error LNK2001: unresolved external symbol _SCAN_to_Disk
nidaq_wrap.obj : error LNK2001: unresolved external symbol _Timeout_Config
nidaq_wrap.obj : error LNK2001: unresolved external symbol _WFM_Chan_Control
nidaq_wrap.obj : error LNK2001: unresolved external symbol _WFM_Check
nidaq_wrap.obj : error LNK2001: unresolved external symbol _WFM_ClockRate
nidaq_wrap.obj : error LNK2001: unresolved external symbol _WFM_DB_Config
nidaq_wrap.obj : error LNK2001: unresolved external symbol _WFM_DB_HalfReady
nidaq_wrap.obj : error LNK2001: unresolved external symbol _WFM_DB_Transfer
nidaq_wrap.obj : error LNK2001: unresolved external symbol _WFM_from_Disk
nidaq_wrap.obj : error LNK2001: unresolved external symbol _WFM_Group_Control
nidaq_wrap.obj : error LNK2001: unresolved external symbol _WFM_Group_Setup
nidaq_wrap.obj : error LNK2001: unresolved external symbol _WFM_Load
nidaq_wrap.obj : error LNK2001: unresolved external symbol _WFM_Op
nidaq_wrap.obj : error LNK2001: unresolved external symbol _WFM_Rate
nidaq_wrap.obj : error LNK2001: unresolved external symbol _WFM_Set_Clock
nidaq_wrap.obj : error LNK2001: unresolved external symbol _Config_DAQ_Event_Mes
sage
build\lib.win32-2.3\_nidaq.pyd : fatal error LNK1120: 48 unresolved externals
error: command '"D:\Programme\Microsoft Visual Studio\VC98\BIN\link.exe"' failed
with exit status 1120
Weiß jemand von euch was "unresolved external symbol" heißt? Das benötigte "_nidaq.pyd" wurde deshalb nicht erstellt, was ein sehr großes Problem bedeutet.
Gruss,
Toni
Nachdem ich sämtliche Bibliotheken von National Instruments eingefügt habe, die setup.py benötigt, kamen Probleme beim linken:
D:\Python23>python setup.py build
running build
running build_py
copying nidaq.py -> build\lib.win32-2.3
running build_ext
building '_nidaq' extension
swigging nidaq.i to nidaq_wrap.c
D:\Programme\swigwin-1.3.29\swig.exe -python -o nidaq_wrap.c nidaq.i
nidaq.i(37): Warning(118): %typemap(except) is deprecated. Use the %exception di
rective.
D:\Programme\Microsoft Visual Studio\VC98\BIN\cl.exe /c /nologo /Ox /MD /W3 /GX
/DNDEBUG -I. "-ID:/Programme/National Instruments/NI-DAQ/DAQmx ANSI C Dev/includ
e" -ID:\Python23\include -ID:\Python23\PC /Tcnidaq_wrap.c /Fobuild\temp.win32-2.
3\Release\nidaq_wrap.obj
nidaq_wrap.c
nidaq_wrap.c(2865) : warning C4013: 'AI_Check' undefined; assuming extern return
ing int
nidaq_wrap.c(2907) : warning C4013: 'AI_Clear' undefined; assuming extern return
ing int
nidaq_wrap.c(2982) : warning C4013: 'AI_Configure' undefined; assuming extern re
turning int
nidaq_wrap.c(3034) : warning C4013: 'AI_Read' undefined; assuming extern returni
ng int
nidaq_wrap.c(3085) : warning C4013: 'AI_Read_Scan' undefined; assuming extern re
turning int
nidaq_wrap.c(3133) : warning C4013: 'AI_Setup' undefined; assuming extern return
ing int
nidaq_wrap.c(3185) : warning C4013: 'AI_VRead' undefined; assuming extern return
ing int
nidaq_wrap.c(3236) : warning C4013: 'AI_VRead_Scan' undefined; assuming extern r
eturning int
nidaq_wrap.c(3315) : warning C4013: 'AI_VScale' undefined; assuming extern retur
ning int
nidaq_wrap.c(3396) : warning C4013: 'AO_Configure' undefined; assuming extern re
turning int
nidaq_wrap.c(3426) : warning C4013: 'AO_Update' undefined; assuming extern retur
ning int
nidaq_wrap.c(3478) : warning C4013: 'AO_VScale' undefined; assuming extern retur
ning int
nidaq_wrap.c(3532) : warning C4013: 'AO_VWrite' undefined; assuming extern retur
ning int
nidaq_wrap.c(3580) : warning C4013: 'AO_Write' undefined; assuming extern return
ing int
nidaq_wrap.c(3618) : warning C4013: 'DAQ_Check' undefined; assuming extern retur
ning int
nidaq_wrap.c(3660) : warning C4013: 'DAQ_Clear' undefined; assuming extern retur
ning int
nidaq_wrap.c(3702) : warning C4013: 'DAQ_Config' undefined; assuming extern retu
rning int
nidaq_wrap.c(3741) : warning C4013: 'DAQ_DB_Config' undefined; assuming extern r
eturning int
nidaq_wrap.c(3779) : warning C4013: 'DAQ_DB_HalfReady' undefined; assuming exter
n returning int
nidaq_wrap.c(3846) : warning C4013: 'DAQ_DB_Transfer' undefined; assuming extern
returning int
nidaq_wrap.c(3942) : warning C4013: 'DAQ_Monitor' undefined; assuming extern ret
urning int
nidaq_wrap.c(4033) : warning C4013: 'DAQ_Op' undefined; assuming extern returnin
g int
nidaq_wrap.c(4081) : warning C4013: 'DAQ_Rate' undefined; assuming extern return
ing int
nidaq_wrap.c(4169) : warning C4013: 'DAQ_Start' undefined; assuming extern retur
ning int
nidaq_wrap.c(4217) : warning C4013: 'DAQ_StopTrigger_Config' undefined; assuming
extern returning int
nidaq_wrap.c(4304) : warning C4013: 'DAQ_to_Disk' undefined; assuming extern ret
urning int
nidaq_wrap.c(4351) : warning C4013: 'Get_DAQ_Device_Info' undefined; assuming ex
tern returning int
nidaq_wrap.c(4382) : warning C4013: 'Get_NI_DAQ_Version' undefined; assuming ext
ern returning int
nidaq_wrap.c(4422) : warning C4013: 'Init_DA_Brds' undefined; assuming extern re
turning int
nidaq_wrap.c(4535) : warning C4013: 'SCAN_Op' undefined; assuming extern returni
ng int
nidaq_wrap.c(4618) : warning C4013: 'SCAN_Setup' undefined; assuming extern retu
rning int
nidaq_wrap.c(4714) : warning C4013: 'SCAN_Start' undefined; assuming extern retu
rning int
nidaq_wrap.c(4831) : warning C4013: 'SCAN_to_Disk' undefined; assuming extern re
turning int
nidaq_wrap.c(4886) : warning C4013: 'Timeout_Config' undefined; assuming extern
returning int
nidaq_wrap.c(4934) : warning C4013: 'WFM_Chan_Control' undefined; assuming exter
n returning int
nidaq_wrap.c(4985) : warning C4013: 'WFM_Check' undefined; assuming extern retur
ning int
nidaq_wrap.c(5078) : warning C4013: 'WFM_ClockRate' undefined; assuming extern r
eturning int
nidaq_wrap.c(5159) : warning C4013: 'WFM_DB_Config' undefined; assuming extern r
eturning int
nidaq_wrap.c(5223) : warning C4013: 'WFM_DB_HalfReady' undefined; assuming exter
n returning int
nidaq_wrap.c(5309) : warning C4013: 'WFM_DB_Transfer' undefined; assuming extern
returning int
nidaq_wrap.c(5419) : warning C4013: 'WFM_from_Disk' undefined; assuming extern r
eturning int
nidaq_wrap.c(5477) : warning C4013: 'WFM_Group_Control' undefined; assuming exte
rn returning int
nidaq_wrap.c(5540) : warning C4013: 'WFM_Group_Setup' undefined; assuming extern
returning int
nidaq_wrap.c(5636) : warning C4013: 'WFM_Load' undefined; assuming extern return
ing int
nidaq_wrap.c(5734) : warning C4013: 'WFM_Op' undefined; assuming extern returnin
g int
nidaq_wrap.c(5789) : warning C4013: 'WFM_Rate' undefined; assuming extern return
ing int
nidaq_wrap.c(5871) : warning C4013: 'WFM_Set_Clock' undefined; assuming extern r
eturning int
nidaq_wrap.c(6050) : warning C4013: 'Config_DAQ_Event_Message' undefined; assumi
ng extern returning int
D:\Programme\Microsoft Visual Studio\VC98\BIN\link.exe /DLL /nologo /INCREMENTAL
:NO "/LIBPATH:D:\Programme\National Instruments\NI-DAQ\DAQmx ANSI C Dev\lib" /LI
BPATH:D:\Python23\libs /LIBPATH:D:\Python23\PCBuild nidaq32.lib nidex32.lib /EXP
ORT:init_nidaq build\temp.win32-2.3\Release\nidaq_wrap.obj /OUT:build\lib.win32-
2.3\_nidaq.pyd /IMPLIB:build\temp.win32-2.3\Release\_nidaq.lib
Creating library build\temp.win32-2.3\Release\_nidaq.lib and object build\tem
p.win32-2.3\Release\_nidaq.exp
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AI_Check
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AI_Clear
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AI_Configure
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AI_Read
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AI_Read_Scan
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AI_Setup
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AI_VRead
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AI_VRead_Scan
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AI_VScale
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AO_Configure
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AO_Update
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AO_VScale
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AO_VWrite
nidaq_wrap.obj : error LNK2001: unresolved external symbol _AO_Write
nidaq_wrap.obj : error LNK2001: unresolved external symbol _DAQ_Check
nidaq_wrap.obj : error LNK2001: unresolved external symbol _DAQ_Clear
nidaq_wrap.obj : error LNK2001: unresolved external symbol _DAQ_Config
nidaq_wrap.obj : error LNK2001: unresolved external symbol _DAQ_DB_Config
nidaq_wrap.obj : error LNK2001: unresolved external symbol _DAQ_DB_HalfReady
nidaq_wrap.obj : error LNK2001: unresolved external symbol _DAQ_DB_Transfer
nidaq_wrap.obj : error LNK2001: unresolved external symbol _DAQ_Monitor
nidaq_wrap.obj : error LNK2001: unresolved external symbol _DAQ_Op
nidaq_wrap.obj : error LNK2001: unresolved external symbol _DAQ_Rate
nidaq_wrap.obj : error LNK2001: unresolved external symbol _DAQ_Start
nidaq_wrap.obj : error LNK2001: unresolved external symbol _DAQ_StopTrigger_Conf
ig
nidaq_wrap.obj : error LNK2001: unresolved external symbol _DAQ_to_Disk
nidaq_wrap.obj : error LNK2001: unresolved external symbol _Get_DAQ_Device_Info
nidaq_wrap.obj : error LNK2001: unresolved external symbol _Get_NI_DAQ_Version
nidaq_wrap.obj : error LNK2001: unresolved external symbol _Init_DA_Brds
nidaq_wrap.obj : error LNK2001: unresolved external symbol _SCAN_Op
nidaq_wrap.obj : error LNK2001: unresolved external symbol _SCAN_Setup
nidaq_wrap.obj : error LNK2001: unresolved external symbol _SCAN_Start
nidaq_wrap.obj : error LNK2001: unresolved external symbol _SCAN_to_Disk
nidaq_wrap.obj : error LNK2001: unresolved external symbol _Timeout_Config
nidaq_wrap.obj : error LNK2001: unresolved external symbol _WFM_Chan_Control
nidaq_wrap.obj : error LNK2001: unresolved external symbol _WFM_Check
nidaq_wrap.obj : error LNK2001: unresolved external symbol _WFM_ClockRate
nidaq_wrap.obj : error LNK2001: unresolved external symbol _WFM_DB_Config
nidaq_wrap.obj : error LNK2001: unresolved external symbol _WFM_DB_HalfReady
nidaq_wrap.obj : error LNK2001: unresolved external symbol _WFM_DB_Transfer
nidaq_wrap.obj : error LNK2001: unresolved external symbol _WFM_from_Disk
nidaq_wrap.obj : error LNK2001: unresolved external symbol _WFM_Group_Control
nidaq_wrap.obj : error LNK2001: unresolved external symbol _WFM_Group_Setup
nidaq_wrap.obj : error LNK2001: unresolved external symbol _WFM_Load
nidaq_wrap.obj : error LNK2001: unresolved external symbol _WFM_Op
nidaq_wrap.obj : error LNK2001: unresolved external symbol _WFM_Rate
nidaq_wrap.obj : error LNK2001: unresolved external symbol _WFM_Set_Clock
nidaq_wrap.obj : error LNK2001: unresolved external symbol _Config_DAQ_Event_Mes
sage
build\lib.win32-2.3\_nidaq.pyd : fatal error LNK1120: 48 unresolved externals
error: command '"D:\Programme\Microsoft Visual Studio\VC98\BIN\link.exe"' failed
with exit status 1120
Weiß jemand von euch was "unresolved external symbol" heißt? Das benötigte "_nidaq.pyd" wurde deshalb nicht erstellt, was ein sehr großes Problem bedeutet.
Gruss,
Toni
-
- User
- Beiträge: 670
- Registriert: Sonntag 15. Januar 2006, 18:42
- Wohnort: Celle
- Kontaktdaten:
"Nicht auflösbares externes Symbol" wäre wohl eine ordentliche Deutsche übersetzung. Im Endeffekt heißt das soviel wie dass das Programm was Du probierst zu kompilieren eine Funktion oder ein Datenelement des entsprechenden Namens aus einer Bibliothek braucht, allerdings der linker, der die einzelnen Teile eines Programms zusammenfügt (daher der Name für diesen Schritt) diese Namen über die er meckert nirgendwo im Programm (in diesem Fall in der Python-Erweiterung) finden kann.unresolved external symbol ...
Im Endeffekt bedeutet das, daß Du gegen eine .lib-Datei linken mußt, in der diese Namen beschrieben sind, aber das nicht tust.
Unabhängig davon: der Compiler meldet auch schon eine ganze Menge Fehler, und zwar sind in der Quelldatei auch keine Beschreibungen für die Symbole die gesucht werden vorhanden (deswegen diese Warnung), und damit wird ein Standardrückgabewert für die Funktion des entsprechenden Namens angenommen. Das ist unschön, drückt aber im Endeffekt denk ich zusammen aus, dass Du einfach gegen die Bibliothek die Du einbinden willst nicht linkst (und der entsprechende Header-File nicht im Verzeichnis ist). Ich würd davon ausgehen dass das setup.py kaputt ist.
--- Heiko.
Das gibt es doch nicht. Ich werde noch hier verrückt.
Ich werde augenblicklich mit dem Ersteller in Kontakt treten und das nachfragen. Wenn nichts mehr geht werde ich wahrscheinlich ganz auf Python 2.2 umsteigen (Müsste dann alle Extensions für 2.2 downloaden und installieren. Fraglich ob alle auch in 2.2 vorhanden sind ).
Danke für die Hilfe. Werde mich melden, falls ich was neues in Erfahrung gebracht habe.
Gruss,
Toni
Ich werde augenblicklich mit dem Ersteller in Kontakt treten und das nachfragen. Wenn nichts mehr geht werde ich wahrscheinlich ganz auf Python 2.2 umsteigen (Müsste dann alle Extensions für 2.2 downloaden und installieren. Fraglich ob alle auch in 2.2 vorhanden sind ).
Danke für die Hilfe. Werde mich melden, falls ich was neues in Erfahrung gebracht habe.
Gruss,
Toni
Hallo Toni83,
ich greife auf die Datei nidaq32.dll über ctypes zu.
Damit kann man problemlos die Karten von NI ansteuern.
Tschüß Lutz
PS. hier noch ein paar Programmzeilen, vielleicht hilft es Dir
ich greife auf die Datei nidaq32.dll über ctypes zu.
Damit kann man problemlos die Karten von NI ansteuern.
Tschüß Lutz
PS. hier noch ein paar Programmzeilen, vielleicht hilft es Dir
Code: Alles auswählen
from ctypes import *
pydll=windll.nidaq32 # DLL geladen
AI_Read=pydll.AI_Read # Funktion aus dll geladen
AO_Write=pydll.AO_Write
dig_out=pydll.DIG_Out_Line # Funktion aus dll geladen
port_config=pydll.DIG_Prt_Config
dig_input=pydll.DIG_In_Line
# Analogwert einlesen
kanal=0
deviceNumber=c_int(1) # i16 assigned by MAX
chan=c_int(kanal)
gain=c_int(-1)
h_ret=c_int(999)
status=AI_Read(deviceNumber,chan,gain,byref(h_ret))
# dig Input
deviceNumber=c_int(1) # i16 assigned by MAX
port=c_int(0)
mode=c_int(0)
dir_=c_int(0)
line=c_int(1)
status=port_config(deviceNumber, port, line, dir_)
status =dig_input (deviceNumber, port, line,byref(h_ret))
Hört sich ja ganz gut an, das ganze mit ctypes zu lösen. Habe aber ein Problem mit windll:
Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\Toni Adam Krol\Desktop\ctypes.py", line 1
, in ?
from ctypes import *
File "C:\Dokumente und Einstellungen\Toni Adam Krol\Desktop\ctypes.py", line 4
, in ?
pydll=windll.nidaq32 # DLL geladen
NameError: name 'windll' is not defined
Drücken Sie eine beliebige Taste . . .
Was ist der Grund dafür? Gibt es für win32dll etwa auch eine Python-Extension oder liegt das an einer Einstellung?
Gruss,
Toni
Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\Toni Adam Krol\Desktop\ctypes.py", line 1
, in ?
from ctypes import *
File "C:\Dokumente und Einstellungen\Toni Adam Krol\Desktop\ctypes.py", line 4
, in ?
pydll=windll.nidaq32 # DLL geladen
NameError: name 'windll' is not defined
Drücken Sie eine beliebige Taste . . .
Was ist der Grund dafür? Gibt es für win32dll etwa auch eine Python-Extension oder liegt das an einer Einstellung?
Gruss,
Toni
-
- User
- Beiträge: 670
- Registriert: Sonntag 15. Januar 2006, 18:42
- Wohnort: Celle
- Kontaktdaten:
Das liegt am Dateinamen. Du hast die Datei ctypes genannt, und damit importiert sie sich selbst... Was natürlich nicht klappen kann. Benenn die Datei irgendwie anders, und er wird das ctypes importieren was Du haben willst.
--- Heiko.
Vielen Dank für den Hinweis!!! Natürlich oberbehämmert von mir...
Vielleicht noch eine Frage für heute:
Ich kriege morgen das Gerät von National Instruments und möchte heute schon das Programm dafür schreiben.
Ist diese Meldung:
Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\Toni Adam Krol\Eigene Dateien\versuch.py"
, line 3, in ?
pydll=windll.nidaq32 # DLL geladen
File "D:\Python23\Lib\site-packages\ctypes\_loader.py", line 200, in __getattr
__
dll = self.load_version(name)
File "D:\Python23\Lib\site-packages\ctypes\_loader.py", line 170, in load_vers
ion
return self._plat_load_version(name, version, mode)
File "D:\Python23\Lib\site-packages\ctypes\_loader.py", line 121, in _plat_loa
d_version
return self.load(name, mode)
File "D:\Python23\Lib\site-packages\ctypes\_loader.py", line 112, in load
return self._load(libname, mode)
File "D:\Python23\Lib\site-packages\ctypes\_loader.py", line 124, in _load
return self._dlltype(libname, mode)
File "D:\Python23\Lib\site-packages\ctypes\__init__.py", line 300, in __init__
self._handle = _dlopen(self._name, mode)
WindowsError: [Errno 126] Das angegebene Modul wurde nicht gefunden
Drücken Sie eine beliebige Taste . . .
richtig, falls das Gerät an das USB Interface nicht angehängt wurde? Eigentlich steht es ja da, aber ich hege immer noch etwas misstrauen...
Ich bedanke mich schon mal bei allen die mir bis dahin geholfen haben.
Gruss,
Toni
Vielleicht noch eine Frage für heute:
Ich kriege morgen das Gerät von National Instruments und möchte heute schon das Programm dafür schreiben.
Ist diese Meldung:
Traceback (most recent call last):
File "C:\Dokumente und Einstellungen\Toni Adam Krol\Eigene Dateien\versuch.py"
, line 3, in ?
pydll=windll.nidaq32 # DLL geladen
File "D:\Python23\Lib\site-packages\ctypes\_loader.py", line 200, in __getattr
__
dll = self.load_version(name)
File "D:\Python23\Lib\site-packages\ctypes\_loader.py", line 170, in load_vers
ion
return self._plat_load_version(name, version, mode)
File "D:\Python23\Lib\site-packages\ctypes\_loader.py", line 121, in _plat_loa
d_version
return self.load(name, mode)
File "D:\Python23\Lib\site-packages\ctypes\_loader.py", line 112, in load
return self._load(libname, mode)
File "D:\Python23\Lib\site-packages\ctypes\_loader.py", line 124, in _load
return self._dlltype(libname, mode)
File "D:\Python23\Lib\site-packages\ctypes\__init__.py", line 300, in __init__
self._handle = _dlopen(self._name, mode)
WindowsError: [Errno 126] Das angegebene Modul wurde nicht gefunden
Drücken Sie eine beliebige Taste . . .
richtig, falls das Gerät an das USB Interface nicht angehängt wurde? Eigentlich steht es ja da, aber ich hege immer noch etwas misstrauen...
Ich bedanke mich schon mal bei allen die mir bis dahin geholfen haben.
Gruss,
Toni
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Klingt eher als würde die Datei nidaq32.dll nicht gefunden. Versuch mal, sie in %WINDIR%\system32 zu kopieren und dann zu importieren, was dann passiert.
Wie ich darauf komme? So:
Wie ich darauf komme? So:
Code: Alles auswählen
>>> import ctypes
>>> ctypes.windll.kernel32
<WinDLL 'kernel32', handle 7c800000 at 9ef468>
>>> ctypes.windll.nosuchdll
Traceback (most recent call last):
File "<stdin>", line 1, in ?
File "C:\Programme\Python\Lib\site-packages\ctypes\__init__.py", line 346, in __getattr__
dll = self._dlltype(name)
File "C:\Programme\Python\Lib\site-packages\ctypes\__init__.py", line 383, in __init__
self._handle = _LoadLibrary(self._name)
WindowsError: [Errno 126] Das angegebene Modul wurde nicht gefunden
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Nun ja habe jetzt noch erfahren, dass die nidaq32.dll die ich erhalten habe eigentlich die nidex32.dll ist, nur umbenannt wurde. Außerdem war Sie nicht im Python Ordner und auch nicht im system32, weshalb es schon gar nicht hätte funktionieren können. Ich habe allerdings erst morgen die CD mit den dll´s zur Hand, weshalb ich mich morgen noch mal melden werde ob es geklappt hat.
Danke für die Hilfe!
Gruss,
Toni
Danke für die Hilfe!
Gruss,
Toni
Servus,
habe endlich die CD und die Steuerung gekriegt. Habe jetzt feststellen müssen, dass das Gerät einen anderen Treiber braucht. Es wurde nicht der NI-DAQ sondern der NI-DAQmx Treiber mitgeliefert. Ich habe jetzt auch noch von NI erfahren müssen, dass der mx Treiber eine andere dll enthält als der traditionelle (statt nidaq32.dll enthält es nicaiu.dll). Nicht nur das, auch die vom User lula in seinem Beitrag beschriebenen Funktionsaufrufe sind jetzt bei der anderen dll andere.
Ich habe mir mal erlaubt die Source von lula etwas zu modifizieren:
Ich weiss aber nicht ob dies stimmt. Falls sich hier einer mit der nicaiu.dll auskennt, wäre ich außerordentlich dankbar, wenn er sich hier dazu äußern könnte.
Gruss,
Toni
Edit (Leonidas): Code in Python-Tags gesetzt.
habe endlich die CD und die Steuerung gekriegt. Habe jetzt feststellen müssen, dass das Gerät einen anderen Treiber braucht. Es wurde nicht der NI-DAQ sondern der NI-DAQmx Treiber mitgeliefert. Ich habe jetzt auch noch von NI erfahren müssen, dass der mx Treiber eine andere dll enthält als der traditionelle (statt nidaq32.dll enthält es nicaiu.dll). Nicht nur das, auch die vom User lula in seinem Beitrag beschriebenen Funktionsaufrufe sind jetzt bei der anderen dll andere.
Ich habe mir mal erlaubt die Source von lula etwas zu modifizieren:
Code: Alles auswählen
from ctypes import *
pydll=windll.nicaiu # DLL geladen
AI_Read=pydll.DAQmxReadBinaryI16 # Funktion aus dll geladen
AO_Write=pydll.DAQmxWriteBinaryI16
# Analogwert einlesen
kanal=0
deviceNumber=c_int(1) # i16 assigned by MAX
chan=c_int(kanal)
gain=c_int(-1)
h_ret=c_int(999)
status=AI_Read(deviceNumber,chan,gain,byref(h_ret))
# dig Input
deviceNumber=c_int(1) # i16 assigned by MAX
port=c_int(0)
mode=c_int(0)
dir_=c_int(0)
line=c_int(1)
status=port_config(deviceNumber, port, line, dir_)
status =dig_input (deviceNumber, port, line,byref(h_ret))
Gruss,
Toni
Edit (Leonidas): Code in Python-Tags gesetzt.
Hallo Toni83,
Ich habe bisher nur mit dem traditionellen NI-DAC gearbeitet, kenne mich also in der nicaiu.dll nicht aus.
NI liefert meist Beispiele in VB oder C/C++ mit. Vielleicht kannst Du dort die Aufrufkonventionen ableiten.
Tschüß Lutz
Ich habe bisher nur mit dem traditionellen NI-DAC gearbeitet, kenne mich also in der nicaiu.dll nicht aus.
NI liefert meist Beispiele in VB oder C/C++ mit. Vielleicht kannst Du dort die Aufrufkonventionen ableiten.
Tschüß Lutz
Ich glaube ich muss da selber durch...
Danke für die Antwort lula!
Werde mal schauen ob ich etwas in Erfahrung bringe. Werde dann auf jeden Fall wenn ich Erfolg habe, den Source hier für die Nachwelt ins Forum stellen.
Danke erstmal allen für die Hilfe.
Gruss,
Toni
Danke für die Antwort lula!
Werde mal schauen ob ich etwas in Erfahrung bringe. Werde dann auf jeden Fall wenn ich Erfolg habe, den Source hier für die Nachwelt ins Forum stellen.
Danke erstmal allen für die Hilfe.
Gruss,
Toni
Habe da nocmal ein Problem. Habe jetzt möglichen Source gefunden:
static TaskHandle ghProcessTask=0;
// Analog Out (static) ------------------------------------------------------
DAQmxCreateTask("", &ghProcessTask);
DAQmxCreateAOVoltageChan(ghProcessTask, ProcessChannel, "", -amplitude, amplitude, DAQmx_Val_Volts, NULL);
DAQmxCfgOutputBuffer (ghProcessTask, 0);
DAQmxStartTask(ghProcessTask);
while(gRunning){
DAQmxWriteAnalogScalarF64 (ghProcessTask, 0, 10.0, data[++i%bufferSize], 0);
Delay(0.05);
}
DAQmxCleanTask(ghProcessTask);
Problem: &ghProcessTask und static TaskHandle ghProcessTask=0;
Wie löse ich das in Python? Gibt es da eine Möglichkeit mit ctypes?
Gruss,
Toni
static TaskHandle ghProcessTask=0;
// Analog Out (static) ------------------------------------------------------
DAQmxCreateTask("", &ghProcessTask);
DAQmxCreateAOVoltageChan(ghProcessTask, ProcessChannel, "", -amplitude, amplitude, DAQmx_Val_Volts, NULL);
DAQmxCfgOutputBuffer (ghProcessTask, 0);
DAQmxStartTask(ghProcessTask);
while(gRunning){
DAQmxWriteAnalogScalarF64 (ghProcessTask, 0, 10.0, data[++i%bufferSize], 0);
Delay(0.05);
}
DAQmxCleanTask(ghProcessTask);
Problem: &ghProcessTask und static TaskHandle ghProcessTask=0;
Wie löse ich das in Python? Gibt es da eine Möglichkeit mit ctypes?
Gruss,
Toni
Habe inzwischen eine Lösung gefunden. Problem dabei:
Der Code ist in C geschrieben, da ich für den neuen Treiber NIDAQmx keine Möglichkeit sehe diesen in Python zu schreiben.
Nun weiss ich leider nicht wie ich meinen C-Code bzw. mein angelegtes Projekt (enthält 2 Programme) in Python einbinde. Im Prinzip will ich nur einen Wert aus dem C-Code in Python zurückgeben. Wie ich allerdings den Code von Python aufrufe weiss ich leider nicht und benötige da eure Hilfe...
Gruss,
Toni
P.S.: Wer gleiche oder ähnliche Probleme hat, hier der Code: (Ich hoffe es bringt euch weiter )
USB 6009 (Auslesen eines Spannungswerts):
Und NIDAQmx.c für das dll Handling. (Falls jemand dies benötigt dem kann ich das schicken, da der Code dazu zu lang wäre um in an dieser Stelle zu senden.)
Der Code ist in C geschrieben, da ich für den neuen Treiber NIDAQmx keine Möglichkeit sehe diesen in Python zu schreiben.
Nun weiss ich leider nicht wie ich meinen C-Code bzw. mein angelegtes Projekt (enthält 2 Programme) in Python einbinde. Im Prinzip will ich nur einen Wert aus dem C-Code in Python zurückgeben. Wie ich allerdings den Code von Python aufrufe weiss ich leider nicht und benötige da eure Hilfe...
Gruss,
Toni
P.S.: Wer gleiche oder ähnliche Probleme hat, hier der Code: (Ich hoffe es bringt euch weiter )
USB 6009 (Auslesen eines Spannungswerts):
Code: Alles auswählen
#include <stdio.h>
#include <NIDAQmx.h>
#define DAQmxErrChk(functionCall) if( DAQmxFailed(error=(functionCall)) ) goto Error; else
int main(void)
{
int32 error=0;
TaskHandle taskHandle=0;
int32 read;
float64 data[1000];
char errBuff[2048]={'\0'};
/*********************************************/
// DAQmx Configure Code
/*********************************************/
DAQmxErrChk (DAQmxCreateTask("",&taskHandle));
DAQmxErrChk (DAQmxCreateAIVoltageChan(taskHandle,"Dev1/ai0","",DAQmx_Val_Cfg_Default,-10.0,10.0,DAQmx_Val_Volts,NULL));
DAQmxErrChk (DAQmxCfgSampClkTiming(taskHandle,"",10000.0,DAQmx_Val_Rising,DAQmx_Val_FiniteSamps,1000));
/*********************************************/
// DAQmx Start Code
/*********************************************/
DAQmxErrChk (DAQmxStartTask(taskHandle));
/*********************************************/
// DAQmx Read Code
/*********************************************/
DAQmxErrChk (DAQmxReadAnalogF64(taskHandle,1000,10.0,DAQmx_Val_GroupByChannel,data,1000,&read,NULL));
/*********************************************/
// Read Voltage Input
/*********************************************/
printf("Acquired %f points\n",data[0]);
Error:
if( DAQmxFailed(error) )
DAQmxGetExtendedErrorInfo(errBuff,2048);
if( taskHandle!=0 ) {
/*********************************************/
// DAQmx Stop Code
/*********************************************/
DAQmxStopTask(taskHandle);
DAQmxClearTask(taskHandle);
}
if( DAQmxFailed(error) )
printf("DAQmx Error: %s\n",errBuff);
printf("End of program, press Enter key to quit\n");
getchar();
return 0;
}