Guten Tach, Leute!
Folgendes Problem:
Wenn ich meine DLL kompiliere, sie dann in eine GEX packen will, test weise in ein GM-Projekt einbinden will und das Spiel dann starte um die Funktionen zu testen, kriege ich den Fehler hier:
[hide=Problemsignatur:]Problemereignisname: APPCRASH
Anwendungsname: test.exe
Anwendungsversion: 1.0.0.0
Anwendungszeitstempel: 2a425e19
Fehlermodulname: libstdc++-6.dll
Fehlermodulversion: 0.0.0.0
Fehlermodulzeitstempel: 4e71847f
Ausnahmecode: 40000015
Ausnahmeoffset: 0001bb30
Betriebsystemversion: 6.1.7601.2.1.0.768.3
Gebietsschema-ID: 2055
Zusatzinformation 1: 4176
Zusatzinformation 2: 4176e39b12a5f22424b14e313154e263
Zusatzinformation 3: b723
Zusatzinformation 4: b723479c9bc771a4a7d2fda0ab8bd1bd[/hide]
Der Fehler ist gestern zum ersten mal aufgetreten. Vorher hab ich die DLL auch getestet und da hat alles ohne Probleme funktioniert.
Woran kann das liegen?
Hier mal die Funktionen, die extern aufrufbar sind und die Extension selber (+Test.gmk).
[hide=Aufrufbare Funktionen der DLL]
Alles anzeigen
[/hide]
Ich hab auch mal Windows nach Fehlern (mittels sfc/scannow) durchsuchen lassen und da wird auch nix gefunden.
Danke schon mal für die Hilfe!
MfG Trixt0r
Folgendes Problem:
Wenn ich meine DLL kompiliere, sie dann in eine GEX packen will, test weise in ein GM-Projekt einbinden will und das Spiel dann starte um die Funktionen zu testen, kriege ich den Fehler hier:
[hide=Problemsignatur:]Problemereignisname: APPCRASH
Anwendungsname: test.exe
Anwendungsversion: 1.0.0.0
Anwendungszeitstempel: 2a425e19
Fehlermodulname: libstdc++-6.dll
Fehlermodulversion: 0.0.0.0
Fehlermodulzeitstempel: 4e71847f
Ausnahmecode: 40000015
Ausnahmeoffset: 0001bb30
Betriebsystemversion: 6.1.7601.2.1.0.768.3
Gebietsschema-ID: 2055
Zusatzinformation 1: 4176
Zusatzinformation 2: 4176e39b12a5f22424b14e313154e263
Zusatzinformation 3: b723
Zusatzinformation 4: b723479c9bc771a4a7d2fda0ab8bd1bd[/hide]
Der Fehler ist gestern zum ersten mal aufgetreten. Vorher hab ich die DLL auch getestet und da hat alles ohne Probleme funktioniert.
Woran kann das liegen?
Hier mal die Funktionen, die extern aufrufbar sind und die Extension selber (+Test.gmk).
[hide=Aufrufbare Funktionen der DLL]
C-Quellcode
- #include <cstdlib>
- #include <map>
- #include "Animation.h"
- #include "Bone.h"
- #include "Skeleton.h"
- #define gm extern "C" __declspec (dllexport)
- using namespace std;
- map<unsigned int, Animation*> animations;
- map<unsigned int, Bone*> bones;
- map<unsigned int, Skeleton*> skels;
- int anim_i = 0, bone_i = 0, skel_i = 0;
- /*
- * Helper methods
- */
- Animation *animation_get_ref(double index){
- unsigned int i = (unsigned int) index;
- if(i >= 0 && i < animations.size()) return animations.at(i);
- else return NULL;
- }
- double animation_get_index(Animation *animation){
- bool found = false;
- map<unsigned int, Animation*>::iterator it = animations.begin();
- for(; it != animations.end() && !found; ++it) found = it->second == animation;
- return (--it)->first;
- }
- Bone *bone_get_ref(double index){
- unsigned int i = (unsigned int) index;
- if(i >= 0 && i < bones.size()) return bones.at(i);
- else return NULL;
- }
- double bone_get_index(Bone *bone){
- bool found = false;
- map<unsigned int, Bone*>::iterator it = bones.begin();
- for(; it != bones.end() && !found; ++it) found = it->second == bone;
- return (--it)->first;
- }
- Skeleton *skeleton_get_ref(double index){
- unsigned int i = (unsigned int) index;
- if(i >= 0 && i < skels.size()) return skels.at(i);
- else return NULL;
- }
- /*
- * Animation export
- */
- gm double animation_create(double bones, double frames){
- anim_i++;
- animations.insert(pair<unsigned int, Animation*>(anim_i,new Animation(bones,frames)));
- return anim_i;
- }
- gm double animation_delete(double animation_index){
- Animation *anim = animation_get_ref(animation_index);
- animations.erase((unsigned int)animation_index);
- delete anim;
- anim = NULL;
- return 0;
- }
- gm double animation_get_frames(double animation_index){
- try{
- return animation_get_ref(animation_index)->get_frames();
- }
- catch(...){
- return -1;
- }
- }
- gm double animation_get_bones(double animation_index){
- try{
- return animation_get_ref(animation_index)->get_frames();
- }
- catch(...){
- return -1;
- }
- }
- gm double animation_set_frame(double animation_index, double frame, double bone_index,double x, double y, double angle, double scale, double parent_angle, double parent_length,
- double sprite_xscale, double sprite_yscale, double sprite_index, double joint_xscale, double joint_yscale, double joint_index){
- Animation *anim = animation_get_ref(animation_index);
- anim->set_frame(frame, (unsigned int) bone_index,x,y,angle,scale,parent_angle,parent_length,sprite_xscale,sprite_yscale,sprite_index,joint_xscale,joint_yscale,joint_index);
- return 0;
- }
- gm double animation_set_keyframe(double animation_index, double frame, double key){
- Animation *anim = animation_get_ref(animation_index);
- anim->set_keyframe((unsigned int) frame, (bool) key);
- return 0;
- }
- gm double animation_concat(double animation_index1, double animation_index2){
- Animation *anim = animation_get_ref(animation_index1);
- anim->concat(animation_get_ref(animation_index2));
- return 0;
- }
- gm double animation_create_between(double animation_index1, double animation_index2, double frames){
- Animation *anim = animations.at((unsigned int) animation_index1);
- animations.insert(pair<unsigned int, Animation*>(animations.size(),anim->create_between(animations.at((unsigned int) animation_index2),(unsigned int) frames)));
- return animations.size()-1;
- }
- /*
- * Bone export
- */
- gm double bone_create(double parent, double x, double y, double angle, double scale,double index){
- bone_i++;
- bones.insert(pair<unsigned int, Bone*>( bone_i, new Bone(NULL,bone_get_ref(parent),x,y,angle,scale,(unsigned int)index)));
- return bone_i;
- }
- gm double bone_set_name(double bone_index, char *name){
- try{
- bone_get_ref(bone_index)->name = name;
- return 1;
- }
- catch(...){
- return -1;
- }
- }
- gm double bone_set_sprite(double bone_index, double sprite_index, double x, double y, double depth, double joint){
- try{
- bone_get_ref(bone_index)->set_sprite(sprite_index,x,y,depth,(bool) joint);
- return 1;
- }
- catch(...){
- return -1;
- }
- }
- gm double bone_set_animation(double bone_index, double animation_index){
- bone_get_ref(bone_index)->animation = animation_get_ref(animation_index);
- }
- gm double bone_set_added_angle(double bone_index, double angle){
- try{
- bone_get_ref(bone_index)->added_angle = angle;
- return 1;
- }
- catch(...){
- return -1;
- }
- }
- gm double bone_parent_exists(double bone_index){
- try{
- return (double)(bone_get_ref(bone_index)->parent != 0L);
- }
- catch(...){
- return -1;
- }
- }
- gm double bone_get_animation(double bone_index){
- return animation_get_index(bone_get_ref(bone_index)->animation) ;
- }
- gm double bone_get_sprite(double bone_index){
- try{
- return bone_get_ref(bone_index)->sprite;
- }
- catch(...){
- return -1;
- }
- }
- gm double bone_get_joint(double bone_index){
- try{
- return bone_get_ref(bone_index)->joint;
- }
- catch(...){
- return -1;
- }
- }
- gm double bone_get_added_angle(double bone_index){
- try{
- return bone_get_ref(bone_index)->added_angle;
- }
- catch(...){
- return -1;
- }
- }
- gm char *bone_get_name(double bone_index){
- try{
- return bone_get_ref(bone_index)->name;
- }
- catch(...){
- return 0L;
- }
- }
- /*
- * Skeleton export
- */
- gm double skeleton_create(){
- skel_i++;
- skels.insert(pair<unsigned int, Skeleton*>(skel_i, new Skeleton()));
- return skel_i;
- }
- gm double skeleton_add_bone(double skeleton_index, double bone_index){
- skeleton_get_ref(skeleton_index)->add_bone(bone_get_ref(bone_index));
- return 1;
- }
- gm double skeleton_set_frame_speed(double skeleton_index, double frame_speed){
- try{
- skeleton_get_ref(skeleton_index)->frame_speed = frame_speed;
- return 1;
- }
- catch(...){
- return -1;
- }
- }
- gm double skeleton_set_frame(double skeleton_index, double frame){
- try{
- skeleton_get_ref(skeleton_index)->count= frame;
- return 1;
- }
- catch(...){
- return -1;
- }
- }
- gm double skeleton_set_offset(double skeleton_index, double x, double y){
- try{
- skeleton_get_ref(skeleton_index)->set_offset(x,y);
- return 1;
- }
- catch(...){
- return -1;
- }
- }
- gm double skeleton_set_animation(double skeleton_index, double animation_index){
- try{
- skeleton_get_ref(skeleton_index)->set_animation(animation_get_ref(animation_index));
- return 1;
- }
- catch(...){
- return -1;
- }
- }
- gm double skeleton_update(double skeleton_index, double x, double y){
- try{
- skeleton_get_ref(skeleton_index)->update(x,y);
- return 1;
- }
- catch(...){
- return -1;
- }
- }
- gm double skeleton_flip_hor(double skeleton_index){
- try{
- skeleton_get_ref(skeleton_index)->flip_hor();
- return 1;
- }
- catch(...){
- return -1;
- }
- }
- gm double skeleton_flip_ver(double skeleton_index){
- try{
- skeleton_get_ref(skeleton_index)->flip_ver();
- return 1;
- }
- catch(...){
- return -1;
- }
- }
- gm double skeleton_get_bone_by_name(double skeleton_index, char *name){
- try{
- return bone_get_index(skeleton_get_ref(skeleton_index)->get_bone_by_name(name));
- }
- catch(...){
- return -1;
- }
- }
- gm double skeleton_get_animation(double skeleton_index){
- try{
- return animation_get_index(skeleton_get_ref(skeleton_index)->animation);
- }
- catch(...){
- return -1;
- }
- }
- gm double skeleton_get_frame(double skeleton_index){
- try{
- return skeleton_get_ref(skeleton_index)->frame;
- }
- catch(...){
- return -1;
- }
- }
- gm double skeleton_get_frame_speed(double skeleton_index){
- try{
- return skeleton_get_ref(skeleton_index)->frame_speed;
- }
- catch(...){
- return -1;
- }
- }
Ich hab auch mal Windows nach Fehlern (mittels sfc/scannow) durchsuchen lassen und da wird auch nix gefunden.
Danke schon mal für die Hilfe!
MfG Trixt0r
Albert Einstein schrieb:
Probleme kann man niemals mit derselben Denkweise lösen, durch die sie entstanden sind.