DLL TBitmap



  • ich habe folgendes Problem ich will eine dll schreiben, die wie folgt aussieht

    #include <jpeg.hpp>
    #include <vcl.h>
    
    extern "C" __declspec(dllexport) int myfun(char * a, char * b){
     TJPEGImage *tjp = new TJPEGImage();
    Graphics::TBitmap * bmp = new Graphics::TBitmap();
    
    bmp->LoadFromFile(a);
    tjp->Assign(bmp);
    tjp->Compress(); 
    tjp->SaveToFile(b);
    delete bmp;
    delete tjp;
    
    return 1;
     }
    

    fehlermeldung:
    😡 [Linker Fatal Error] Fatal: Unable to open file 'GRAPHICS.OBJ'



  • //---------------------------------------------------------------------------
    
    #include <vcl.h>
    #include <jpeg.hpp>
    #pragma hdrstop
    
    extern "C" __declspec(dllexport) int myfun(char * a, char * b);
    
    //---------------------------------------------------------------------------
    //   Important note about DLL memory management when your DLL uses the
    //   static version of the RunTime Library:
    //
    //   If your DLL exports any functions that pass String objects (or structs/
    //   classes containing nested Strings) as parameter or function results,
    //   you will need to add the library MEMMGR.LIB to both the DLL project and
    //   any other projects that use the DLL.  You will also need to use MEMMGR.LIB
    //   if any other projects which use the DLL will be performing new or delete
    //   operations on any non-TObject-derived classes which are exported from the
    //   DLL. Adding MEMMGR.LIB to your project will change the DLL and its calling
    //   EXE's to use the BORLNDMM.DLL as their memory manager.  In these cases,
    //   the file BORLNDMM.DLL should be deployed along with your DLL.
    //
    //   To avoid using BORLNDMM.DLL, pass string information using "char *" or
    //   ShortString parameters.
    //
    //   If your DLL uses the dynamic version of the RTL, you do not need to
    //   explicitly add MEMMGR.LIB as this will be done implicitly for you
    //---------------------------------------------------------------------------
    
    #pragma argsused
    int WINAPI DllEntryPoint(HINSTANCE hinst, unsigned long reason, void* lpReserved)
    {
            return 1;
    }
    //---------------------------------------------------------------------------
    int myfun(char * a, char * b)
    {
     TJPEGImage *tjp = new TJPEGImage();
     Graphics::TBitmap * bmp = new Graphics::TBitmap();
    
     bmp->LoadFromFile(a);
     tjp->Assign(bmp);
     tjp->Compress();
     tjp->SaveToFile(b);
     delete bmp;
     delete tjp;
    
     return 1;
    }
    

    Funktioniert es so?

    Liebe Grüße Todd


Anmelden zum Antworten