Habe voriges jahr mal angefangen mir ein paar Userlibs zu testzwecken mit Code::Blocks & MinGW zu schreiben das funktionierte auch super.
Nun hab ich mir aber gedacht probierst mal VC++ Express 2010 zum lib schreiben aus und nach ein paar anfangs schwierigkeiten die libs so zu kompilieren das
PB sie importieren konnte funktionierte es soweit alles ganz gut.
Nur heute bin ich auf ein kleines problem gestoßen das mich schon den halben tag beschäftigt.
Und zwar habe ich mir eine Klasse und einen kleinen wrapper für die funktionen geschrieben um sie in PB zu nutzen das funktioniert auch wunderbar
nur muste ich eben eine funktion in einer Schleife aufrufen um mir einen Listeninhalt auszugeben und da blieb das PB programm dann plötzlich stehen.
Habe erst vermutet das etwas mit der Liste nicht in ordnung ist und habe sie durch nen Array und später durch einen Vector ersetzt, das ergebnis war
immer das selbe zwischen dem 20 - 30 funktionsaufruf blieb das PB Programm stehen.
Habe es dann einmal mit einer ganz einfachen Klasse mit nur einer Funktion die nur ein DWORD zurück gibt getestet und es ist immer das selbe
das PB Programm bleibt in der Schleife hängen.
Hat von euch jemand ne Idee woran es liegen könnte?
Hier mal der Source der Files fals wer testen will.
Simple_wrapper.cpp
Code: Alles auswählen
#include <Simple.h>
ext DWORD __stdcall Simple_Init()
{
Simple* sPtr = new Simple();
return (DWORD) sPtr;
}
ext DWORD __stdcall test(Simple* ptr)
{
return ptr->test();
}
ext void __stdcall Release(Simple* ptr)
{
delete ptr;
}
Code: Alles auswählen
#define ext extern "C"
#include <Windows.h>
class Simple
{
public:
DWORD test(void);
};
Simple.cpp
Code: Alles auswählen
#include <Simple.h>
DWORD Simple::test()
{
return 123;
}
test.pb
Code: Alles auswählen
ImportC "G:\libs\Simple\Release\Simple.lib"
Simple_Init() As "_Simple_Init@0"
test(*sPtr) As "_test@4"
Release(*sPtr) As "_Release@4"
EndImport
*sPtr = Simple_Init()
For x = 0 To 30
Debug test(*sPtr)
Next
Release(*sPtr)