Probleme beim aufrufen von DLL-Funktionen



  • Hi,

    ich habe mit dem Visual C++ 6.0 Assistenten eine MFC-SDI Anwendung erstellt und möchte in dieser Anwendung Funktionen einer DLL aufrufen. Diese DLL wurde ordnungsgemäss von einer anderen Person erstellt (also ich kenne genau die Funktionsnamen, parameter übergabe usw.). Die files swedll32.dll und swedll32.lib wurden in den Projekt-Ordner kopiert und dem Compiler wurde die swedll32.lib bekannt gegeben (menu: Projekt - Einstellungen - Linker in box "Objekt-/Bibliothek-Module"). Die DLL-Funktion will ich von der Dokument Klasse (C...Doc) aus aufrufen, deshalb wird sie im Dokumentheader file ...Doc.h als import Funktion deklariert:

    extern "C" _declspec(dllimport) double FAR PASCAL_CONV swe_julday(int year, int month, int day, double hour, int gregflag);
    

    Übrigens, ich weiss nicht was das FAR PASCAL_CONV sein soll. Wenn ich das Programm so kompiliere meldet der Compiler für diese code linie zwei Fehler:

    j:\provaswiss\provaswissdoc.h(14) : error C2146: Syntaxfehler : Fehlendes ';' vor Bezeichner 'swe_julday'
    j:\provaswiss\provaswissdoc.h(14) : fatal error C1004: Unerwartetes Dateiende gefunden
    

    Also, dann probiere ich dieses FAR PASCAL_CONV zu entfernen und der Compiler meldet mir keine Fehler mehr. Ich fahre so weiter, und rufe die DLL-Funktion in der Dokument Klasse so auf:

    double jd = swe_julday(2003,11,19,14,SE_GREG_CAL);
    

    der Compiler meldet dann diesen Fehler:

    J:\ProvaSwiss\ProvaSwissDoc.cpp(88) : error C2065: 'SE_GREG_CAL' : nichtdeklarierter Bezeichner
    

    SE_GREG_CAL ist doch in der library swedll32.lib deklariert, oder nicht? Bitte helft mir, ich weiss wirklich nicht mehr weiter. Was mache ich falsch?
    Danke!

    Gruss,
    Olrac



  • sorry, aber das solltes du schon wissen ob es in einem header der *.lib definiert ist. Scheint nicht so zu sein, denn sonst ist alles richtig.....

    Leider weis ich nicht was das #define SE_GREG_CAL bedeuten soll, bzw was es für eine int-wertigkeit hat. Falls du es wissen solltest kannst du es ja selbst definieren oder den hersteller fragen ob es wirklich definiert wurde.


Anmelden zum Antworten