Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   VC-Dll Projekt im BCB kompilieren (https://www.delphipraxis.net/91473-vc-dll-projekt-im-bcb-kompilieren.html)

static_cast 5. Mai 2007 12:55


VC-Dll Projekt im BCB kompilieren
 
Hallo,

ich versuche gerade mein VisualStudio Projket im Borland Builder 2006 zu kompilieren, das geht auch soweit gut bis ich dann
Zitat:

"Do not prefix underbars to exported symbol names (-vu)"
anschalte, ab dann mag der Linker nicht mehr tun. Es kommt bei jedem Export
Zitat:

"[Linker Error] Error: Public symbol for EXPDEF '<exportname>' not found in module <file>"
hat jemand eine Idee?

Nachtesten lässt es sich auch ganz einfach in einem neuen Projekt, einfach New->Other->DLL, als C++ ohne VCL, aber Multithreaded und VC++ Style.

Code:
//---------------------------------------------------------------------------

#include <windows.h>

//---------------------------------------------------------------------------

#define DllExport extern "C" __declspec(dllexport)

//---------------------------------------------------------------------------

DllExport int BCBTest()
{
    return 1234;
}

//---------------------------------------------------------------------------

BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fwdreason, LPVOID lpvReserved)
{
    return 1;
}

//---------------------------------------------------------------------------
Gruß,
Daniel

Robert Marquardt 5. Mai 2007 12:59

Re: VC-Dll Projekt im BCB kompilieren
 
Verwendest du ein .def File? Das sollte man immer machen (zumindest bei VS).

static_cast 5. Mai 2007 13:09

Re: VC-Dll Projekt im BCB kompilieren
 
Nein eine def Datei liegt nicht vor, nich im VS und naja ergo nicht im BCB, das war eh ein Kramp die ganzen Sachen in ein BCB Projket zu bekommen, aber das ist ja eine andere Geschichte ;)

Kann die def Datei nicht vom VS erstellt werden?

DMW 5. Mai 2007 13:30

Re: VC-Dll Projekt im BCB kompilieren
 
Zitat:

Zitat von Robert Marquardt
Verwendest du ein .def File? Das sollte man immer machen (zumindest bei VS).

Beim BCB nicht.

Warum willst du keine Unterstricht vor Symbolnamen haben? Das ist C-Konvention. Und wenn du die Option im DLL-Projekt anschaltest, mußt du sie auch in den Projekten aktivieren, in welchen du die DLL benötigst.

static_cast 5. Mai 2007 13:50

Re: VC-Dll Projekt im BCB kompilieren
 
Das hat wohl weniger was mit wollen zu tun, sondern eher mit der Kompatibilität zu der Anwendung die die Dll verwendet.

Robert Marquardt 5. Mai 2007 17:29

Re: VC-Dll Projekt im BCB kompilieren
 
Kriegt man bei VS es ueberhaupt hin das der Export ohne Unterstrich und dem @xx (xx = Anzahl Bytes der Parameter) ohne .def File funktioniert?
Ein .def File kann man sich selber schreiben. Das Format is wirklich simpel. scha mal in der Hilfe nach. es duerfte dort beschrieben sein.

static_cast 5. Mai 2007 19:37

Re: VC-Dll Projekt im BCB kompilieren
 
Das name decoration hat etwas mit der calling convention und das es als extern "C" deklariert ist zu tun, aber das ist ja auch nicht mein problem ;)

Sobald ich den "-vu" Schlater wieder wegnehme wird die Library einwandfrei erzeugt, wieso? Nur dann kann sie auch nicht mehr von der Anwendung geladen werden weil alle exports prefixt sind. Ich verzweifel hier noch... :(

DMW 6. Mai 2007 10:05

Re: VC-Dll Projekt im BCB kompilieren
 
Welche Aufrufkonvention benutzt das Programm, das die DLL verwendet? Möglicherweise __stdcall? Da wird gewöhnlich kein Unterstrich vorangesetzt...


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz