Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   C++ Delphi DLL unter MSVC verwenden (https://www.delphipraxis.net/113299-delphi-dll-unter-msvc-verwenden.html)

entropie 5. Mai 2008 20:18


Delphi DLL unter MSVC verwenden
 
Hallo,

seit Tagen versuche ich eine unter Delphi entwickelte ISA-Geräteansteuerung (kleiner Microcontroller für das Verfahren in x- und y-Richtung) unter C++ zu benutzen. Leider bis jetzt erfolglos.
Der Delphi-Sourcecode steht mir zur Verfügung (kann die dll daher modifizieren und neu erstellen), darf ihn aber maximal auszugsweise posten.
Los gehts mit einem kleinen Test-C++-Teil mit der dynamischen Einbindung der .dll:

schnipp
----------------
#include "windows.h"
typedef void (__stdcall* LPFNDLLFUNC3)();//prozeduraufruf
int main(...)
{
HINSTANCE hInstance = LoadLibrary("meinedll.dll");
LPFNDLLFUNC3 DLLFCT3;
if(hInstance==NULL)
return(0);
DLLFCT3=(LPFNDLLFUNC3)GetProcAddress((HMODULE hInstance, "Initialize");
if (!DLLFCT3){
FreeLibrary(hInstance);
return(0);}
DLLFCT3();
return(1);
}
---------------
schnapp

Die dll wird geladen, die Funktion 'initialize' wird über sie geladen und problemlos ausgeführt. Problem: der Controller reagiert nicht!!
Der Delphi-Part ist riesig, ich versuche daher einen kleinen überblick zu geben: Die Erstellungsroutine für die dll:

schnipp
---------------
library meinedll;
uses
SysUtils,
portio,
Classes;

type
...
TFwdSt = 0..3;
...

const
...
Bit_7 = $FE
...

var
...
iFwdSt = TFwdSt;
...

...
procedure Initialize;stdcall;
begin
//Initialisierungsroutine unter Verwendung von portio (portwrite, etc)
end
...

exports
...
Initialize,
...;

begin
end.
---------------
schnapp

Brauchen die eingebundenen prozeduren aus portio auch einen stdcall-Parameter?
Wichtig noch zu erwähnen, dass portio mittels CreateService auf einen .sys-Treiber zugreift, der bei der .dll im selben Verzeichnis liegt. Könnte das das Problem verursachen?
Den oben geposteten Code in C++ habe ich schon vielfach verändert, aber nie eine Reaktion des Controllers provozieren können. Hat jemand vielleicht Erfahrungen mit "runtime dynamic linking" in C mit Delphi-dlls?

Ich wäre wirklich dankbar für Anregungen, gerne poste ich noch ein paar Sachen mehr falls es nötig ist.

Gruß
Entropie

Olli 21. Jun 2008 22:13

Re: Delphi DLL unter MSVC verwenden
 
Welche Windowsversion benutzt du zum Testen? 32bit oder 64bit?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:01 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