dll funktioniert nicht auf jedem OS (insb. Vista)



  • Hallo,

    ich habe noch nicht gar so viel Ahnung von DLLs bzw c Programmierung, aber immerhin Dank diesem Forum gehts voran!

    nun habe ich ein kleines Programm geschrieben, was als Anhang zu einem anderen Programm dient und in Form einer DLL durch die Welt schwirrt.

    nun habe ich immer wieder das Problem, dass es Leute gibt bei denen läuft das ganze fehlerfrei und andere, da geht gar nichts. typischerweise ist Vista das System der Wahl. wie kann ich jetzt raus bekommen, woran es wohl liegen könnte???

    die Fehlermeldung ist ja immer nicht so richtig aussagekräftig. oder doch?

    ich habe folgende Libs

    # include <windows.h>
    # include <direct.h>
    # include <stdio.h>
    # include <stdlib.h>
    # include <math.h> 
    # include <time.h>
    # include <string.h>
    

    drinne, also erstmal nichts besonderes?

    ach ja. in der Regel ist es hop oder top. Entweder das Hauptprogramm greift auf die DLL zu und alles ist schön, oder es kommt sofort zum Absturz.

    kann mir da jemand helfen? kann man evtl aus der Fehlermeldung doch was raus lesen, oder muss man bei Vista mal die Libs auf einen aktuellen Stand bringen? ich bin ein bissel ratlos.

    SF



  • die Fehlermeldung ist ja immer nicht so richtig aussagekräftig. oder doch?

    doch, die Fehlermeldung ist wichtig

    hat ja keiner eine ahnung was deine dll macht oder wie du sie benutzt nur sagen meine dll strüzt ab ist auch irgendwie leer.
    ausserdem ne dll ist ne binary die auch geladen wird wie ne exe der unterschied ist sie muss nicht voll lauffähig sein sondern nur funktionen zur verfügung stellen du kannst auch jede exe wie eine dll laden und die funktionen der exe verwenden.

    also laut deiner beschreibung hat bestimmt kein einziger eine ahnung was du meinst...
    💡



  • okay. kein Problem.

    kann man hier irgendwie pdfs anhängen? oder einen Screenshot?

    da ich das so nicht gefunden habe, habe ich es mal bei imagehack hoch geladen. das ist so eine typische Fehlermeldung.

    http://img121.imageshack.us/img121/8928/errorparti.jpg
    http://img121.imageshack.us/img121/2674/errorpartii.jpg



  • ist eine zugriffsverletzung, (NTSTATUSCODE C0005) zugriff verweigert , bei einem read, könnte daran liegen dass der zugriff auf einem speicherbereich oder device in vista gesperrt ist.



  • hast du eine fehler detection wenn deine dll geladen wird, ausserdem kannst du sagen welche dll deine ist sehe im anhang nur windows eigene dll's oder hab ich da eine übersehen. bzw welche name das modul hat wenn es geladen wird.

    zeig mal etwas source code zb wie du die dll lädst , und welche funktionen aufgerufen werden würde vielleicht helfen, und eine beschreibeung im kurzen was deine dll macht.



  • eine Fehlerdetection habe ich nicht. gibt es da irgend etwas einfaches Standardmäßiges

    meine DLL steht da in der Tat nicht, aber es steht das Programm welches meine DLL called. ganz oben die terminal exe

    code ist ne Menge simple Berechnungen

    //---- minimums counting
       i=start-KPeriod;
       while(i>=0) {
           double min=1000000;
           k=i+KPeriod-1;
           while(k>=i){
               price=lowArray[k];
               if(min>price) min=price;
               k--; }
    
           LowesBuffer[i]=min;
           i--; }
    
       //---- maximums counting
       i=start-KPeriod;
       while(i>=0){
           double max=-1000000;
           k=(i+KPeriod-1);
           while(k>=i){
               price=highArray[k];
               if(max<price) max=price;
               k--; }
           HighesBuffer[i]=max;
           i--; }
    

    ich habe gerade von einem gehört, er hat zwei Rechner. auf dem einem läuft es bei XP und auf dem anderen nicht. das gleiche Programm. XP jungfräulich. evtl. ist es doch ein Hardware Problem.



  • naja also wenn das programm jez abstürzt und deine dll nicht geladen wird vielleicht deshalb, solltest wenn du dll lädst, zb.:

    HANDLE myDLL;
    myDLL=LoadLibrary(_T("C:\\deineDLL.dll"));
    if(!myDLL){
     // fehler beim laden der dll
     return false;
    }
    

    also wenn du eine funktion zurverfügung stellst die nur in der dll vorhanden ist wird terminal.exe wohl nicht viel freude haben, falls es ohne die nicht kann!

    der fehler scheint in der terminal.exe zu liegen! weil der auslöser des fehlers noch im speicherbereich der terminal.exe liegt!


Anmelden zum Antworten