?
Hallo Leute,
wollte jetzt mal was mit Dll´s machen, aber ich verzweifle schon am "einfachsten". Ich glaube es liegt evtl. eher an meiner IDE (Dev C++, in der neueren Version von Orwell), aber mag evtl. doch mal einer drauf gucken?
Also ich habe meinen Originalcode mittlerweile verworfen und benutze die Vorlage zur DLL erstellung im Dev C++, weil ich nach Tagen des Googelns gelesen haben, das diese bei den meisten funktioniert. Bei mir natürlich nicht.
Also erst mal der Code:
dllmain.c
/* Replace "dll.h" with the name of your header */
#include "dll.h"
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
DLLIMPORT void HelloWorld ()
{
MessageBox (0, "Hello World from DLL!\n", "Hi", MB_ICONINFORMATION);
}
BOOL APIENTRY DllMain (HINSTANCE hInst /* Library instance handle. */ ,
DWORD reason /* Reason this function is being called. */ ,
LPVOID reserved /* Not used. */ )
{
switch (reason)
{
case DLL_PROCESS_ATTACH:
break;
case DLL_PROCESS_DETACH:
break;
case DLL_THREAD_ATTACH:
break;
case DLL_THREAD_DETACH:
break;
}
/* Returns TRUE on success, FALSE on failure */
return TRUE;
}
und hier dll.h
#ifndef _DLL_H_
#define _DLL_H_
#if BUILDING_DLL
# define DLLIMPORT __declspec (dllexport)
#else /* Not BUILDING_DLL */
# define DLLIMPORT __declspec (dllimport)
#endif /* Not BUILDING_DLL */
DLLIMPORT void HelloWorld (void);
#endif /* _DLL_H_ */
Ich denke das müsste schon so passen.
So, den ersten Fehler den ich bekomme ist der hier :
[Warning] cannot find entry symbol DllMainCRTStartup; defaulting to 000000006f5c1000
Hab danach schon gegooglet, und gefunden ich sollte dem Linder das hier mitgeben:
"-mdll -entry=_DllMain@12 -lkernel32 -nostdlib
Tja, der Fehler verschwindet dann schon, dafür kommt das hier:
i386:x86-64 architecture of input file `test1.exp' is incompatible with i386 output
und
[Linker error] test1.exp:fake:(.edata+0x34): undefined reference to `HelloWorld'
Der Compiler in Dev C++ ist : TDM - GCC 4.7.1. 32 Bit
Ich hab schon bei den Compiler und Linker einstellungen geguckt ob irgendwo 64Bit oder so aktiviert ist, aber ist es nicht.
Und ich muss ehrlich zugeben, dass ich bis auf 2 "Test Projekte" immer alles mit der IDE kompiliere, also über CMD-Line und selbst im Makefile rumtüfteln ist Unbekanntes Terrain für mich.
Hat evtl. jmd. das Problem schon mal gehabt, oder kann mehr mit den Meldungen anfangen?