AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

DLL in C mit dem GCC

Ein Thema von Luckie · begonnen am 16. Aug 2006 · letzter Beitrag vom 4. Sep 2006
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

DLL in C mit dem GCC

  Alt 16. Aug 2006, 09:49
Ich versuche gerade eine DLL mit dem GCC zu schreiben und sie in einem Delphi Programm zu verwenden:

FirstDLL.c:
Code:
#include <windows.h>
#include "FirstDLL.h"

int WINAPI DllMain (HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved)
{
     return 1;
}

EXPORT int add(int a,int b)
{
   return a+b;
}
FirstDLL.h:
Code:
#ifndef FIRSTDLL_H_
#define FIRSTDLL_H_

#endif /*FIRSTDLL_H_*/

#ifdef __cplusplus
#define EXPORT extern "C" __declspec (dllexport)
#else
#define EXPORT __declspec (dllexport)
#endif

EXPORT int add(int,int);
Und der Aufruf in Delphi:
Delphi-Quellcode:
type
  TAdd = function(a, b: Integer): Integer;

procedure TForm1.Button1Click(Sender: TObject);
var
  hLib: THandle;
  s: String;
begin
  s := IncludeTrailingBackSlash(ExtractFilePath(ParamStr(0)))+ 'FirstDLL.dll';
  hLib := LoadLibrary(PChar(s));
  if hLib <> 0 then
  begin

    FreeLibrary(hLib);
  end
  else
    ShowMessage(SysErrorMessage(GetLastError));
end;
Wen ich jetzt aber auf den Button klicke bleibt das Programm bei LoadLibrary einfach hängen und reagiert nicht mehr. Was mache ich da falsch?

Ich habe mal die DLL mit dem DeopendencyWalker geöffnet. ScreenShot im Anhang. Irgendwie will er eine MSJava.dll einbinden, aber die habe ich auf meinem ganzen System nicht gefunden.
Miniaturansicht angehängter Grafiken
dw_199.jpg  
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von turboPASCAL
turboPASCAL

Registriert seit: 8. Mai 2005
Ort: Sondershausen
4.274 Beiträge
 
Delphi 6 Personal
 
#2

Re: DLL in C mit dem GCC

  Alt 16. Aug 2006, 10:36
Keine Ahnung was du da machst.
Du kannst aber event. dort was für dich herrauslesen: http://in4k.untergrund.net/index.php...Delphi_and_GCC

Ggf. noch stdcall; oder cdecl noch angeben ?
Matti
Meine Software-Projekte - Homepage - Grüße vom Rüsselmops -Mops Mopser
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#3

Re: DLL in C mit dem GCC

  Alt 16. Aug 2006, 10:42
Hm, nicht wirklich.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von MagicAndre1981
MagicAndre1981

Registriert seit: 4. Jun 2004
Ort: Nordhausen
2.214 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: DLL in C mit dem GCC

  Alt 16. Aug 2006, 10:55
das mit dem Java-Ding ist unwichtig, daran liegt es nicht.

hat Mattis Link geholfen?
André
"A programmer is just a tool which converts caffeine into code", daran wirds wohl liegen, dass ich Abends nie pennen kann

Zitat von Luckie:
Nicht nur dass ihr offtopic geworden seid, jetzt werdet ihr selber im Offtopic noch offtopic
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: DLL in C mit dem GCC

  Alt 16. Aug 2006, 10:58
Nur in sofern, dass ich wohl keine DLLMain brauche. Ich abe jetzt nur:
Code:
#include <windows.h>
//#include "FirstDLL.h"

#define EXPORT __declspec(dllexport)

/*int WINAPI DllMain (HINSTANCE hInstance, DWORD fdwReason, PVOID pvReserved)
{
     return 1;
}*/

EXPORT int add(int a,int b)
{
   return a+b;
}
Das klappt aber trotzdem nicht.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: DLL in C mit dem GCC

  Alt 16. Aug 2006, 11:20
Nur so eine Idee: kann es sein, dass die Anwendung die Cygwin.dll zuerst laden muss? Also ehe eine DLL die dann ebenfalls benutzen kann?

Probiere mal, mit mingw gegen die MSVCRT.DLL zu compilieren. Das ist normalerweise etwas "windows-kompatibler". Ggf. geht das auch mit deiner GCC-Version schon.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#7

Re: DLL in C mit dem GCC

  Alt 16. Aug 2006, 11:38
Ja, also diese Cygwin.dll DLL musste ich auch bei normalen Exe-Programmen immer in das Exe Verzeichnis legen, damit es funktioniert. Die wollte ich sowieso iregndwie los werden. Die Cygwin.dll habe ich dann auch in das DLL-Verzeichnis gelegt, von wo aus ich die DLL lade, das hat aber auch nicht geholfen.

Wie compiliere ich gegen die MSVCRT.DLL mit dem GCC? Wo muss ich da bei Eclipse was einstellen?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: DLL in C mit dem GCC

  Alt 16. Aug 2006, 11:56
Neue Informationen.

Dieser Code:
Code:
// FirstDLL.cpp : Definiert den Einstiegspunkt für die DLL-Anwendung.
//

#include "stdafx.h"
#include "FirstDLL.h"



BOOL APIENTRY DllMain( HMODULE hModule,
                       DWORD ul_reason_for_call,
                       LPVOID lpReserved
                )
{
    return TRUE;
}

EXPORT int add(int a,int b)
{
   return a+b;
}
Mit dem VC2005 kompiliert funktioniert. Ich müsste es nur schaffen das name mangling beim VC zu deaktivieren. Aber das ist ein anderes Problem. Es scheint also mit dem zusammenzuhängen, was Flocke vermutet.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: DLL in C mit dem GCC

  Alt 4. Sep 2006, 06:15
So, in zwei Stunden muss ich mich wohl wieder mit dem Problem auseinandersetzen. Es muss doch eine Möglichkeit geben mit dem GCC und Eclipse eine C-DLL zu schreiben, die man auch laden kann. Kann mir eventuell mal jemand eine C-DLL mit dem GCC geschrieben geben, die ich testen kann?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#10

Re: DLL in C mit dem GCC

  Alt 4. Sep 2006, 07:09
Wie ich oben schon schrieb, habe ich hier auf einem anderen Rechner MINGW installiert, das in seiner Standardkonfiguration (so wie hier installiert) gegen die MSVCRT.DLL linkt.

Die neueren Versionen von CYGWIN / MINGW können so weit ich weiß beides, ich habe es aber noch nicht ausprobiert. Es müsste über einen Compiler-Switch einstellbar sein.

Leider habe ich heute nicht die Zeit, dir da ausführlicher zu helfen.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:04 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