Compiler Optionen ???



  • muss mit der kommandozeile compilieren. bekomm aber errormeldung:

    unresolved external "_Form1"
    unresolved external "TForm1::"

    weiss schon dass ich was zum dazulinken vergessen hab, nur was?
    mit dem compilier befehl aus der ide funkts ja eh, nur das kann ich nicht wegen anderer gründe, egal. Wie oder wo kann ich herausfinden mit welchen kommandozeilenargumenten der bcc compiliert, wenn man ihn aus der ide heraus startet?
    lg und danke im voraus



  • Hallo

    Wär natürlich schön zu wissen wie genau du überhaupt den Compiler aus der Kommandozeile aus aufrufst. Und natürlich warum überhaupt.
    Letzendlich mangelt es dir am Mitlinken aller Quellcodedateien. Du must [b]alle[/a] Quellcodedateien in der Kommandozeile mit angeben. Eben genau das was die IDE für dich macht. Um das zu vereinfachen gibt es Make-Files. Im Projektmenü ist die Möglichkeit sich so ein Make-File exportieren zu lassen.

    bis bald
    akari



  • warum? weil ich mit matlab mir eine dll gebaut hab, und wenn ich sie aus der ide compiliere, hab ich probleme während der laufzeit. jetzt wollt ich halt mal versuchen das ganze mit der kommandozeile zu kompilieren. funkt aber nicht. das mit dem make file is schon mal ne gute idee, danke, aber es steht auch nicht mehr drin als in dem .xml file.

    Hier mal die Compile- und Linkoptionen.
    ----------------------------------------------------------------
    -> Options file = C:\Dokumente und Einstellungen\martinez.TU-G96JNNL0WOF2\Application D
    ata\MathWorks\MATLAB\R14SP3\compopts.bat
    -> COMPILER = bcc32
    -> Compiler flags:
    COMPFLAGS = -c -3 -a8 -b -w- -WM- -DBORLAND -DIBMPC -DMSWIND -I"C:\Programme\MAT
    LAB71\extern\include\cpp" -I"C:\Programme\Borland\CBuilder6\INCLUDE"
    OPTIMFLAGS = -O1 -DNDEBUG
    DEBUGFLAGS = -v
    arguments =
    Name switch = -o
    -> Pre-linking commands =
    -> LINKER = "C:\Programme\MATLAB71\sys\perl\win32\bin\perl.exe" C:\Programme\MATL
    AB71\bin\win32\link_borland_mex.pl
    -> Link directives:
    LINKFLAGS = -aa -c -Tpe -x -Gn -v -L\"C:\Programme\Borland\CBuilder6\"\lib\32bit
    -LC:\Programme\Borland\CBuilder6\lib -L\"C:\Programme\MATLAB71\extern\lib\win32\borland\bc54\" -L\"C
    :\Programme\Borland\CBuilder6\"\Projects -L\"C:\Programme\Borland\CBuilder6\"\lib\obj -LC:\Programme
    \MATLAB71\extern\lib\win32\borland\bc54 mclmcrrt.lib vcllink.lib C0W32.OBJ CP32MTI.LIB IMPORT32.LIB
    mclmcrrt.lib
    LINKFLAGSPOST =
    Name directive = "test.exe"
    File link directive =
    Lib. link directive =
    Rsp file indicator = @
    -> Resource Compiler = brcc32 -w32 -D_NO_VCL -fo".res"
    -> Resource Linker =
    ----------------------------------------------------------------

    Wie gesagt, ich bekomm folgenden error:

    Turbo Incremental Link 5.60 Copyright (c) 1997-2002 Borland
    Error: Unresolved external '_Form1' referenced from C:\DOKUMENTE UND EINSTELLUNGEN\MARTINEZ.TU-G96JN
    NL0WOF2\LOKALE EINSTELLUNGEN\TEMP\TEST.OBJ
    Error: Unresolved external 'TForm1::' referenced from C:\DOKUMENTE UND EINSTELLUNGEN\MARTINEZ.TU-G96
    JNNL0WOF2\LOKALE EINSTELLUNGEN\TEMP\TEST.OBJ

    C:\PROGRAMME\MATLAB71\BIN\WIN32\..\MEX.PL: Error: Link of 'test.exe' failed.



  • Hallo

    weil ich mit matlab mir eine dll gebaut hab, und wenn ich sie aus der ide compiliere, hab ich probleme während der laufzeit. jetzt wollt ich halt mal versuchen das ganze mit der kommandozeile zu kompilieren

    Die IDE macht auch nichts anderes als den Compiler aufrufen. Wenn du Probleme beim Einbinden der DLL hast wird dir auch der Kommandozeilen-Aufruf nichts helfen.

    bis bald
    akari



  • eben nicht, das is es ja. is nur n bisschen komplizierter:

    bei matlab gibts nen compiler, der aus .m files, eben matlab script, .exe oder .dll baut. bei den .dlls eigentlich einen C/C++ wrapper, aber egal. so eine .dll hab ich mir gebaut, und in einem test programm ausgeführt, kein problem. dieses test progamm hab ich von der support seite von matlab. es ist eine konsolenanwenung, die die matlab compilierte .dll einbindet und benutzt. für das compilieren dieser anwendung stellt matlab ein script zur verfügung, mbuild. dieses ruft dann den bcc32 mit diversen compiler und linker flags (siehe 2. Post) auf. wie gesagt, funkt astrein.
    Wenn ich aber jetzt im borland builder (mit VCL) die .dll einbinde, kann ich zwar ein mwArray (C++ Wrapper für eine Matlab Matrix) erstellen, es hat aber immer die Grösse 0, dh es wird nicht wirklich angelegt, sondern nur die variable definiert. Hab den gleichen Code auch schon (mit mbuild und in console) getestet, und dort funktioniert das eben.
    Jetzt wollt ich halt versuchen das mit borland builder erstellte projekt mit mbuild zu compilieren, das tut er mitlerweile auch schon. (hab vergessen dass ein borland projekt aus 2 files besteht ;)).
    Nur jetzt stürzt es gleich beim start ab, ich schätz das liegt eben an falschen compiler/link flags, wegen VCL oder so was. Dafür muss ich aber wissen, welche flags der borlandbuilder benuzt.
    lg


Anmelden zum Antworten