BlitzMax hat Probleme mit dem Aufruf von Dll-Funktionen
Übersicht

![]() |
ArtemisBetreff: BlitzMax hat Probleme mit dem Aufruf von Dll-Funktionen |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo zusammen.
Ich habe in C# eine Dll geschrieben und in MSIL nach einem Tutorial in eine unmanaged Dll umgeschrieben. In BlitzPlus funktioniert alles, in BlitzMax jedoch gibt er mir unverständliche Strings aus. Gibt es denn eine andere Möglichkeit, Funktionen aus einer Dll zu bekommen außer mit "LoadLibraryA" und "GetProcAddress"? |
||
![]() |
Jolinah |
![]() Antworten mit Zitat ![]() |
---|---|---|
Man kann z.B. mit dlltool.exe (das soviel ich weiss bei MinGW enthalten ist) eine Interface-Lib generieren.
Code: [AUSKLAPPEN] dlltool --dllname quelle.dll --output-lib ziel.a
Die .a-Datei kannst du dann in BMax direkt importieren. Die Funktionen müssen anschliessend im Extern Block deklariert werden. Mit dieser Methode musst du die DLL auch immer mitliefern. Die .a-Datei wird einkompiliert. |
||
![]() |
Suco-XBetreff: ....... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit Bmax muss das auch funktionieren, nur besteht BMax doch schon des öffteren auf die schönen CStrings.
Gib mal DLL und Funktionsnamen, dann kann man das ja sehen. Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hier ist der Link. | ||
- Zuletzt bearbeitet von Artemis am Di, Apr 04, 2006 14:51, insgesamt einmal bearbeitet
![]() |
Suco-XBetreff: ... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jep, CString Prob.
Probiers mal so Code: [AUSKLAPPEN] Strict Local DllHandle = LoadLibraryA("RegExLib.dll") If Not DllHandle Then RuntimeError("Die Dll ~qRegExLib.dll~q konnte nicht geladen werden!") EndIf Global RegEx_IsMatch:Byte(Text$z, RegEx$z)"Win32" = GetProcAddress(DllHandle, "RegEx_IsMatch") Global RegEx_Replace$z(Text$z, RegEx$z, ReplaceText$z)"Win32" = GetProcAddress(DllHandle, "RegEx_Replace") Print RegEx_IsMatch("Function Lala", "(^| )Function ") Print RegEx_Replace("Function Lala", " Function ", " _Function_ ") Print RegEx_Replace("Function Lala", "^Function ", "_Function_ ") Input("") Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hey vielen Dank!
Aber wofür steht $z ? |
||
![]() |
Suco-XBetreff: ..... |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das konvertiert nen String automatisch zu nem CString.
Sonst müsstest du Code: [AUSKLAPPEN] Global RegEx_IsMatch:Byte(Text:byte ptr, RegEx:byte ptr)"Win32" und beim Aufruf String.ToCString() Was ich persönlich nicht so hübsch finde. Mfg Suco |
||
Intel Core 2 Quad Q8300, 4× 2500 MHz, 4096 MB DDR2-Ram, GeForce 9600GT 512 MB |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group