Hallo liebe C++ und AutoIt'ler
Ich habe hier ein problem mit meiner DLL.
Mein DLL Code :
main.cpp
main.h
#ifndef __MAIN_H__
#define __MAIN_H__
#include <windows.h>
#include <string>
#ifdef BUILD_DLL
#define DLL_EXPORT __declspec(dllexport)
#else
#define DLL_EXPORT __declspec(dllimport)
#endif
#ifdef __cplusplus
extern "C"
{
#endif
int DLL_EXPORT add(int num1, int num2);
#ifdef __cplusplus
}
#endif
#endif
Alles anzeigen
Diesen Code kompiliere ich mit dem Microsoft Visual C++ 2005/2008 compiler mit folgenden optionen:
Enable C++ exception handling (no SEH) [/EHs]
und
extern "C" defaults to nothrow
MS Visual C++ 2008 ist auch installiert.
Code::Blocks kompiliert ohne Errors und ohne Warnings.
Nun habe ich folgendes AutoIt Skript.
Spoiler anzeigen
$dll = DllOpen("api.dll")
$retn = DllCall($dll, "int:cdecl", "add", "int", 20, "int", 44)
If @error Then ConsoleWrite("Error:" & @error & @CRLF)
MsgBox(0, "", $retn)
DllClose($dll)
Dieser Code funktioniert (aber nicht so wie er soll).
Mit int:cdecl bleibt die MsgBox leer. Mit int statt int:cdecl schreibt er in die Konsole Error:3,
in der Hilfe steht dass das bedeutet,
die Funktion wurde nicht gefunden, aber das kann doch nicht stimmen ?!?!
Was muss ich machen damit ich keinen Error bekomme ?
MfG. PrideRage