Einzelnen Beitrag anzeigen

entropie

Registriert seit: 5. Mai 2008
1 Beiträge
 
#1

Delphi DLL unter MSVC verwenden

  Alt 5. Mai 2008, 21:18
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
  Mit Zitat antworten Zitat