Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Servus,

hab das Problem das ich ein BB6 Projekt habe und jetzt eine DLL (emDLL.dll mit em2800.lib) bekommen habe. Diese müßte ich im BB6 Projekt benutzen. Das Problem is nur das mein Linker den Konstruktor als unresovled external bezeichnet...

Klassenexport/import Def:

#ifdef EMDLL_EXPORTS

#define EMDLL_API __declspec(dllexport)

#else

////#define EMDLL_API __declspec(dllimport)

#define EMDLL_API

#endif

kann mir da jmd helfen?

mfg

Alex

P.S.: Hab auch die Lib eingebunden

////#define EMDLL_API __declspec(dllimport)

Warum ist diese Zeile auskommentiert?

Handelt es sich um C oder C++? Falls C in C++ wurde auf den Einsatz von extern "C" geachtet? Wenn es C++ ist muss Dein C-Builder die Funktionsnamen genau so abbilden, wie der zur Erzeugung der lib und dll verwendete Compiler (in Deinem Fall Visual C++).

Warum die Zeile auskommentiert is weiß ich auch nich genau...Hab wie gesagt nur den Header, die DLL und ne Lib bekommen...

Is C++...

Wenn ich etz z.b. die Lib aufmach steht vor dem Funktionsnamen ein "?".

Bei einer von mir erzeugten DLL unter BB steht ein "_" davor...

Sagt das vielleicht jmd was welche Aufrufkonvention ich da dann benutzen muss?

Bin ratlos :confused:

mfg

Alex

Wenn die Namen dekoriert sind, kannst du Load Time Dynamic Linking vergessen. Die Namensdekoration für exportierte C++-Symbole ist nicht standardisiert, da kocht jeder Compilerhersteller sein eigenes Süppchen.

Du wirst also Run Time Dynamic Linking (LoadLibrary, GetProcAddress) benutzen müssen.

Och nö,

da muss ich wieder soviel schreiben :(

Warum die Zeile auskommentiert is weiß ich auch nich genau...Hab wie gesagt nur den Header, die DLL und ne Lib bekommen...

Is C++...

Nimm die Kommentare mal wieder weg. __declspec(dllimport) macht Visual C++ bekannt, dass eine Funktion aus einer DLL benutzt werden soll. Ob Dein Compiler damit auch umgehen kann, wirst Du ja beim Testlauf erfahren ;)

Wenn ich etz z.b. die Lib aufmach steht vor dem Funktionsnamen ein "?".

Bei einer von mir erzeugten DLL unter BB steht ein "_" davor...

Sagt das vielleicht jmd was welche Aufrufkonvention ich da dann benutzen muss?

C++ benutzt so genanntes "name mangling", bei dem die Funktionsnamen und Namen von Member-Functions auf einen eindeutigen Bezeichner abgebildet werden. Das Verfahren ist nicht standardisiert, daher können sich hier Compiler unterscheiden. Wenn zwei Compiler nicht mit dem gleichen Verfahren arbeiten, kommt es zu Problemen. Umgehen kann man diese Probleme i.d.R. nur völlig, indem man beim Entwurf der DLL nur ein "C-Style-Interface" exportiert und auch nur dieses importiert. Der Export von C++ Klassen ist dann aber nicht möglich.

Ob Symbole mit C-Konvention importiert oder exportiert werden erkennst Du daran, dass die Prototypen in einen Block eingschlossen sind, dem ein extern "C" vorangestellt ist.

Du wirst also Run Time Dynamic Linking (LoadLibrary, GetProcAddress) benutzen müssen.

Auch hierbei sage ich größere Probleme voraus, insbesondere wenn Klassen verwendet werden sollen.

Auch hierbei sage ich größere Probleme voraus, insbesondere wenn Klassen verwendet werden sollen.
Richtig, es geht ja um Klassen. Da sehe ich ehrlich gesagt schwarz. Highzwerg, kannst du beim Hersteller nachfragen, ob es die DLL auch für Borland gibt?

Servus,

also habs noch a bissel probiert...

Des Problem wird wahrscheinlich wirklich die Klasse sein...

Des Prob is diese SDK kam nich direkt über nen Hersteller sondern über nen Geschäftspartner... Bis ma des dem erklärt was ma haben will und bis er des besorgt...

:(

Aba danke für eure Beiträge! Hab mir auch schon überlegt ne Def Datei anzulegen, aba diese Klasse...

mfg

Alex

Aba danke für eure Beiträge! Hab mir auch schon überlegt ne Def Datei anzulegen, aba diese Klasse...

Du könntest Dir, wenn Du eine passende Visual C++ Version besitzt, mit Visual C++ eine Wrapper-DLL um die DLL mit der Klasse bauen, die nur ein C-Style-Interface exportiert.

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.