Eigene dll in CPP Source einbinden?



  • Hallo,

    ich habe ein kleines Projekt welches aus einer Dll und einer Exe Datei besteht.
    Die Dll umfasst die Dateien (dllmain.cpp und dll.h) die Exe (app.cpp).
    So nun wollte ich auf funktionen der Dll in der app.cpp zugreifen. Hab das zuesrt mit LoadLibrary gemacht was aber irgendwie umständlich ist, da ich ja die Dll erstellt habe und es auch einfacher gehen müsste.

    Hab dann #include "dll.h" gemacht und der Compiler hat auch ohne LoadLibraray nicht gemeckert das die Funktionen der Dll nicht da wären. Nur der Linker bringt komische Fehler:

    Error: Unresolved external 'FunktionsName' referenced from ...

    Was mache ich Falsch? Die Dll samt Header Datei liegt im gleichen Verzeichnis wie die app.cpp. Zusätzlich hab ich von der Dll noch .obj und .tds! muss ich beim Linken da noch was beachten?

    Gruß,
    ueps



  • bei einer dll sollte auch eine lib dabei sein.
    diese musst du linken - denn darin stehen die verweise auf die dll

    wenn du diese lib nicht hast, musst du mit LoadLibrary arbeiten.



  • Ist leider keine Lib da, muss ich da beim compilen der dll dem Compiler zusätzliche Parameter angeben damit er das macht? Hab den bcc32 (Borland 5.5.1) Compiler.



  • Ja musst du. Aber welche Parameter du da genau angeben musst, weiß ich jetzt leider auch nicht. Hast du ne IDE dazu? Wahrscheinlich kannst du es dann in den Projekteinstellungen machen. Wenn du keine IDE hast, dann ruf den compiler mal ohne Parameter oder mit /? auf.



  • Hi, hab da mal ne Liste mit Optionen leider blick ich da nicht ganz durch. Ich weiß nur das man mit bcc32 -WD source.cpp ne Win32 Dll erzeugt, wie die Lib geht? k.A.

    Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland
    Syntax is: BCC32 [ options ] file[s] * = default; -x- = turn switch x off
    -3 * 80386 Instructions -4 80486 Instructions
    -5 Pentium Instructions -6 Pentium Pro Instructions
    -Ax Disable extensions -B Compile via assembly
    -C Allow nested comments -Dxxx Define macro
    -Exxx Alternate Assembler name -Hxxx Use pre-compiled headers
    -Ixxx Include files directory -K Default char is unsigned
    -Lxxx Libraries directory -M Generate link map
    -N Check stack overflow -Ox Optimizations
    -P Force C++ compile -R Produce browser info
    -RT * Generate RTTI -S Produce assembly output
    -Txxx Set assembler option -Uxxx Undefine macro
    -Vx Virtual table control -X Suppress autodep. output
    -aN Align on N bytes -b * Treat enums as integers
    -c Compile only -d Merge duplicate strings
    -exxx Executable file name -fxx Floating point options
    -gN Stop after N warnings -iN Max. identifier length
    -jN Stop after N errors -k * Standard stack frame
    -lx Set linker option -nxxx Output file directory
    -oxxx Object file name -p Pascal calls
    -tWxxx Create Windows app -u * Underscores on externs
    -v Source level debugging -wxxx Warning control
    -xxxx Exception handling -y Produce line number info
    -zxxx Set segment names



  • Hmmmm... möglicherweise ist es auch ein Parameter des Linkers. Sorry, dass ich dir nicht besser helfen kann.



  • Hab es geschafft ne Lib zu erzeugen, mit tlib.exe libname +libname.obj

    Hab dann nochmal versucht das ganz zu erzeugen, der Fehler bleibt aber. Hab die Lib auch schon ins Lib-Verzeichnis vom Compiler gestellt , jedoch auch negativ. An was könnte das liegen?



  • Sagst du dem Compiler auch, dass er im Lib-Verzeichnis nachschauen soll?



  • Ja mit -L"c:\Progra~1\Bcc55\lib" da hab ich auch die lib der Dll reingemacht und ins include Verzeichnis die Header Datei, der Fehler kommt aber nach wie vor.


Anmelden zum Antworten