![]() |
GetProcaddress: string-übergabe casten?
Moin,
ich habe hier einen dll-Aufruf
Code:
GetProcAddress möchte einen PAnsiChar haben. Wie findet hier die Übergabe in D2009 statt? Wird das gecastet oder muss ich das explizit tun?
GetProcAddress(dllhandle,'_INIPC_initialize_board@4')
Basis ist eine D6-Anwendung Grüße, Messie |
AW: GetProcaddress: string-übergabe casten?
Hallo,
Delphi-Quellcode:
GetProcAddress(dllhandle,PAnsiChar(AnsiString('_INIPC_initialize_board@4')))
So kann eigentlich nichts schief gehen. |
AW: GetProcaddress: string-übergabe casten?
Zitat:
Das hättest du aber auch selber nachsehen/ausprobieren können :zwinker: Dank Multiplatform würde ich aber irgendwo langsam mal eine gemeinsame Schnittstelle erwarten, welche direkt einen String entgegennimmt. |
AW: GetProcaddress: string-übergabe casten?
Ist das eine Fremd-DLL?
Die Funktion ist nicht in der DEF-Datei der DLL eingetragen bzw. hat die DLL keine DEF-Datei. Dadurch hat man so Gelumpe wie @4 an den Funktionsnamen. Siehe auch: ![]() |
AW: GetProcaddress: string-übergabe casten?
Zitat:
Code:
weder in der API-Doku noch im CodeInsight.
GetProcAddress
Retrieves the address of an exported function or variable from the specified dynamic-link library (DLL). FARPROC WINAPI GetProcAddress( HMODULE hModule, LPCSTR lpProcName ); @TiGü: das ist eine D6-Wrapper-dll, die auf eine CAN-dll zugreift. Zur Abwärtskompatibilität hat der Lieferant eine eigene Wrapper-dll zur Verfügung gestellt. Also von hinten durch die Brust ins Auge. Funzt aber mit dem Delphi-Testprogramm. Das Benutzerprogramm ist aber in LabView geschrieben und da läuft die dll nicht unter Win7/64. Da LabView nur Ansi und 32 bit kann bin ich auf der Suche nach der Ursache. Und da kommen die Aufrufe und Übergaben recht schnell in den Focus. Vielleicht gibt es ja noch andere Unterschiede beim dll-Aufruf zwischen XP und Win7/64 Grüße, Messie |
AW: GetProcaddress: string-übergabe casten?
Zitat:
In der WinAPI gibt es natürlich immernoch nur die ANSI-Version. Delphi hat inzwischen eine überladene Version mit Konvertierung, aber ich hätte damit gerechnet, daß die schon bei 2009 eingebaut worden ist. (spätestens in XE gibt es sie jedenfalls schon) Was sind denn für Versionen in der Windows.pas zu finden? |
AW: GetProcaddress: string-übergabe casten?
Zitat:
Noch nicht überladen weil noch nicht unicodefähig :shock:
Code:
Aber das sollte damit geklärt sein. Mein Problem muss ich wohl anders lösen. Ich habe einen signed int mit 16 bit im Labview gefunden und vermute, dass dessen Übergabe ans Win64 Späne macht. Das werde ich als nächstes debuggen.
function GetProcAddress(hModule: HMODULE; lpProcName: LPCSTR): FARPROC; external kernel32 name 'GetProcAddress';
function GetProcAddress(hModule: HMODULE; lpProcName: LPCWSTR): FARPROC; begin if ULONG_PTR(lpProcName) shr 16 = 0 then // IS_INTRESOURCE Result := GetProcAddress(hModule, LPCSTR(lpProcName)) else Result := GetProcAddress(hModule, LPCSTR(AnsiString(lpProcName))); end; Grüße, Messie |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz