Simples C/C++ Programm, Nutzung einer lib funktioniert nicht.
-
Ich verzweifele langsam an folgendem simplen Programm:
/* *main.c * */ #include <k8055.h> #define false 0 #define true 1 int i,j; int main (void){ i=OpenDevice(0) //initialisiert Vellemann k8055 board-id 0 j=0; while(true){ WriteAllDigital(j); j++; if (j=3){ j=0; } } }
der Inhalt des header Files:
/* $Id: k8055.h,v 1.4 2008/05/21 20:25:51 mr_brain Exp $ This file is part of the libk8055 Library. The libk8055 Library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. The libk8055 Library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. http://opensource.org/licenses/ */ #ifdef __cplusplus extern "C" { #endif /* prototypes */ int OpenDevice(long board_address); int CloseDevice(); long ReadAnalogChannel(long Channelno); int ReadAllAnalog(long* data1, long* data2); int OutputAnalogChannel(long channel, long data); int OutputAllAnalog(long data1,long data2); int ClearAllAnalog(); int ClearAnalogChannel(long channel); int SetAnalogChannel(long channel); int SetAllAnalog(); int WriteAllDigital(long data); int ClearDigitalChannel(long channel); int ClearAllDigital(); int SetDigitalChannel(long channel); int SetAllDigital(); int ReadDigitalChannel(long channel); long ReadAllDigital(); int ResetCounter(long counternr); long ReadCounter(long counterno); int SetCounterDebounceTime(long counterno, long debouncetime); int ReadAllValues (long int *data1, long int *data2, long int *data3, long int *data4, long int *data5); int SetAllValues(int digitaldata, int addata1, int addata2); long SetCurrentDevice(long deviceno); long SearchDevices(void); char *Version(void); #ifdef __cplusplus } #endif
die k8055.h liegt in /usr/local/include
die libk8055.so liegt in /usr/local/lib
es gibt eine /etc/ld.so.conf.d/k8055.conf mit dem inhalt /usr/local/liblaut dem Ersteller der lib (http://libk8055.sourceforge.net/)kann man diese einfach so nutzen:
gcc -Wall -lk8055 main.c
mache ich das, erhalte ich als Fehlermeldung:
Nicht definierter Verweis auf 'OpenDevice'
Nicht definierter Verweis auf 'WriteAllDigital'Das der lib beigefügte Testprogramm funktioniert und bringt auch beim make keine Fehler. Ich habe zum Test auch mal alle includes des originalen Testprogramms in mein kleines Programm eingefügt, funktioniert auch nicht.
So langsam bin ich am Ende meiner Weisheit.Normalerweise müsste der Code, an dem ja nicht viel dran ist, doch so funktionieren oder übersehe ich da etwas?
Gruß René
-
hmmm hat sich erledigt
warum auch immer man alles mit angeben muss
gcc -Wall main.c -lk8055 -lusb -lm -o main
führte zum Erfolg
-
Das ist kein C/C++-Programm. Das Programm ist in C geschrieben und nicht in Perl/Pyton oder Java/Ruby oder einer anderen Kombination von 2 Programmiersprachen .
-
tntnet schrieb:
Pyton
Diese Programmiersprache kenne ich gar nicht.