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.

Alten DLL-Export anpassen (war: Brauche Hilfe in C++)

Empfohlene Antworten

Veröffentlicht

Hi!

Leider programmiere ich nicht mit C++, aber dennoch muss ich einen alten Source einer DLL etwas anpassen. Die Anpassungen sind erledigt, allerdings erhalte ich beim Kompilieren einige Fehler, da ich nun .net verwende und die dll ursprünglich mit einer uralten Version erstellt wurde. Folgender Code bereitet mir Probleme:

long __pascal __saveregs __export GetDHCHECK()

Hier wird mir z.B. gesagt, dass man nun für __pascal den Begriff WINAPI verwenden soll und für __export die Anweisung __declspec(dllexport).

Leider bekomme ich das trotzdem nicht hin und habe die Fehler C2144, C4229 und C4518.

Vielleicht weiß jemand wie die oben genannte Anwesung richtig zu schreiben ist, damit sie in .net keine Fehler verursacht.

Wäre echt super wenn mir da jemand helfen könnte.

Danke!

Hallo nordi80!

1. Der Betreff ist wenig aussagekräftig. So ziemlich jeder, der hier ein Thema erstellt, sucht Hilfe. Bitte beim nächsten Mal drauf achten, dass der Betreff dein Problem besser beschreibt.

2.

long __pascal __saveregs __export GetDHCHECK()

Hier wird mir z.B. gesagt, dass man nun für __pascal den Begriff WINAPI verwenden soll und für __export die Anweisung __declspec(dllexport).

Hier wäre es gut gewesen, wenn du nicht den ursprünglichen (unangepassten) Code gezeigt hättest, sondern den, der die Fehler verursacht.

3.

Leider bekomme ich das trotzdem nicht hin und habe die Fehler C2144, C4229 und C4518.
Hier wird niemand Fehler an der Nummer erkennen können. Du hast die kompletten Fehlermeldungen vorliegen, warum sollen wir sie umständlich über die Nummer raussuchen? Also bitte immer die vollständige Fehlermeldung angeben.

Hier der angepasste CODE:

long WINAPI __saveregs __declspec(dllexport) GetHDSerial()

Hier Fehler-/Warnmeldung:

error C2144: Syntaxfehler : 'int' sollte auf ';' folgen

warning C4229: Anachronismus verwendet : Modifizierer der Daten werden ignoriert

Werde mir nächstes Mal ein genaueres Thema überlegen, damit niemand einen Klick zu viel tätigen muss.

Gruß

.... oder vielleicht nicht reinschaut. Ich hoffe es hat trotzdem jemand einen Rat :-))

Gruß

Ja der Fehler tritt in genau dieser Zeile auf :(

In der Nähe steht auch nichts mit int.

Hier mal einen Auszug eines anderen Teils mit den gleichen Fehlermeldungen:

Das auskommentierte ist die alte Syntax und darunter meine bereits etwas an den neuen Stand angepasste Version.

//long __pascal __saveregs __export GetHDSerial()

long WINAPI __saveregs __declspec(dllexport) GetHDSerial()

{

unsigned long Serial;

GetVolumeInformation("c:\\", NULL, NULL, &Serial, NULL, NULL, NULL, NULL);

return Serial;

}

Super, jetzt gehts zumindest ohne Fehler. Habe nur noch jetzt eine neue Warnung: warning C4518: '__declspec(dllexport ) ' : Unerwartete® Speicherklassen- oder Typspezifizierer; wird ignoriert.

Aber die Erstellung geht jetzt schonmal.

Kann man die DLL noch irgendwie verschlüsseln, oder ist das automatisch schon so bei C++? Ich kenne es so von Foxpro, da muss man nämlich einstellen ob die Kompilierung verschlüsselt oder unverschlüsselt stattfinden soll.

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.