Problem beim Erstellen und Verknüpfen eines C codes in der Konsole
-
Hallo Freunde,
ich mache so etwas jetzt zum ersten Mal und vermutlich werden euch noch ziemlich viele Fehler auffallen!
hier ist schon mal das erste Problem:
Ich hab mir eine batch Datei für diese Aufgabe geschrieben:
- als erstes soll die objekt datei erstellt werden.cl.exe /I<D:\tmp\Lib\VC\includes> /MD /c /Tc example.c
Leider kommt hier direkt die Fehlermeldung "Zugriff verweigert"
Zu erst hatte ich das Originalverzeichnis auf c:\programme\microsoft visual studio... Allerdings wird dieser Pfad immer nur bis zum ersten Leerzeichen gelesen...
-
lin123 schrieb:
Hallo Freunde,
ich mache so etwas jetzt zum ersten Mal und vermutlich werden euch noch ziemlich viele Fehler auffallen!
hier ist schon mal das erste Problem:
Ich hab mir eine batch Datei für diese Aufgabe geschrieben:
- als erstes soll die objekt datei erstellt werden.cl.exe /I<D:\tmp\Lib\VC\includes> /MD /c /Tc example.c
Leider kommt hier direkt die Fehlermeldung "Zugriff verweigert"
Zu erst hatte ich das Originalverzeichnis auf c:\programme\microsoft visual studio... Allerdings wird dieser Pfad immer nur bis zum ersten Leerzeichen gelesen...Ich versteh ehrlich gesagt noch nicht ganz was du vorhast.
Aber wenn es nur um das Verzeichnis geht, dann musst du einfach zwei Backslashs nehmen!
\\
cl.exe /I<D:\\tmp\\Lib\\VC\\includes> /MD /c /Tc example.c
-
Mach mal die spitzen Klammern weg.
-
Scheppertreiber schrieb:
Mach mal die spitzen Klammern weg.
Juhu! genau daran hat es gelegen!
Jetzt geht es weiter:
Die erstellte obj datei muss mit verschiedenen Bibliotheken verlinkt werden unter anderem auch einer Fortran Link-Bibliothek: fortranlib.a
hierfür folgt dieser Befehl:CL /ID:\\tmp\\Lib\\VC\\includes /MD /c /Tc example.c LINK /LIBPATH:"D:\tmp\lib\VC\lib" /LIBPATH:"D:\tmp\lib\SDK\v2.0\Lib" /LIBPATH:"C:\Programme\Intel\Compiler\11.1\048\lib\ia32" /out:example.exe example.obj fortranlib.a
hier kommt jetzt der Fehler:
LINK : fatal error LNK1104: Datei "LIBC.lib" kann nicht geöffnet werden.vsvars32.bat habe ich schon ausgeführt
Nachdem ich einfach mal nach dieser Datei gesucht habe, ist mir aufgefallen dass ich diese Datei garnicht habe!!
PS: Ich verwende Microsoft visual studio 8 und den intel fortran compiler für windows 11.1
-
Schön, daß das geklappt hat.
Erklärung: Auf der Kommandozeile dienen "<" und ">" speziellen Zwecken:
"<" liest aus der angebenen Datei und übergibt das an das Programm, hier cl.exe
">" leitet die Ausgabe von cl.exe in die angegebene Datei umDa kommt einiges durcheinander
Dein Libraryproblem kann ich nicht lösen, ich kenne den Linker nicht. Vielleicht
muß da etwas im Environment gesetzt werden. Bleibt nur ein fröhliches rtfm.
-
Ich bin gerade ziemlich frustriert!!
Der Fehler:
LINK : fatal error LNK1104: Datei "LIBC.lib" kann nicht geöffnet werden.
scheint sehr weit verbreitet zu sein und scheinbar hat keiner eine brauchbare Lösung...
-
Kaum ist ein Problem gelöst tritt das nächste auf...
Die Fehlermeldung: LINK : fatal error LNK1104: Datei "LIBC.lib" kann nicht geöffnet werden. ist darauf zu führen das die Bibliothek libc.lib in visual studio ab V2005 nicht mehr enthalten ist.
mehr dazu hier http://msdn.microsoft.com/de-de/library/6wtdswk0:
und hier http://msdn.microsoft.com/de-de/library/2kzt1wy3(VS.80).aspxIch konnte jetzt meine .exe erstellen indem ich die Multithread- und DLL-spezifische Version der Laufzeitbibliothek mit /MD verwendet habe:
CL /ID:\\tmp\lib\VC\include /MD /c /W0 Programm.cpp pause LINK /LIBPATH:"D:\tmp\lib\VC\lib" /LIBPATH:"D:\tmp\lib\SDK\v2.0\Lib" /LIBPATH:"C:\Programme\Intel\Compiler\11.1\048\lib\ia32" /out:Programm.exe Programm.obj fortranlib_md.a pause
und Folgende Bibliotheken ausgeschlossen habe:
#pragma comment( linker, "/NODEFAULTLIB:libc.lib" ) #pragma comment( linker, "/NODEFAULTLIB:uuid.lib" ) #pragma comment( linker, "/NODEFAULTLIB:ImageHlp.lib" )
Das ziel ist es aber ein statisch verlinktes Programm zu erstellen welches dann auf jedem Windowsrechner läuft. Hierfür habe ich jetzt die statische Multithread-Version der Laufzeitbibliothek mit /MT verwendet.
CL /ID:\\tmp\lib\VC\include /MT /c /W0 Programm.cpp pause LINK /LIBPATH:"D:\tmp\lib\VC\lib" /LIBPATH:"D:\tmp\lib\SDK\v2.0\Lib" /LIBPATH:"C:\Programme\Intel\Compiler\11.1\048\lib\ia32" /out:Programm.exe Programm.obj fortranlib_mt.a pause
Hier kommt die Fehlermeldung:
libirc.lib(tbk_backtrace.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__SymInitialize@12" in Funktion "_tbk_trace_stack".
libirc.lib(tbk_backtrace.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__SymCleanup@4" in Funktion "_tbk_trace_stack".
libirc.lib(tbk_backtrace.obj) : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol "__imp__StackWalk@36" in Funktion "_tbk_trace_stack".
Programm.exe : fatal error LNK1120: 3 nicht aufgelöste externe Verweise.ich verstehe nicht warum ich dynamisch linken kann aber statisch nicht!
Ich kann mir eigentlich auch nicht vorstellen dass es an der fortranlib liegt...
vielleicht hat ja einer ne Idee!
Gruß,
Lin
-
Ich versteh auch ehrlich gesagt nicht alles was dahinter steckt!
Vielleicht ist dieser thread ein bisschen abgedrifftet und ist jetzt nicht mehr im richtigen Forum... Ich hab jetzt im Intelforum was gepostet:
http://software.intel.com/en-us/forums/intel-visual-fortran-compiler-for-windows/topic/69242/