001
26.06.2006, 20:05 Uhr
~Schimanski
Gast
|
Hier der code für die DLL:
Code: |
//---------------------------------------------------------------------------
#include <vcl.h> #include <windows.h> #pragma hdrstop //--------------------------------------------------------------------------- // 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; } extern "C" __declspec(dllexport) Sshot(char *pfad) { unsigned char* pBuffer; int result, palette_size; Graphics::TBitmap *Image = new Graphics::TBitmap();
HDC window = GetWindowDC(NULL); HDC HScreenDC = GetDC(0); Image->Handle = CreateCompatibleBitmap(HScreenDC, Screen->Width, Screen->Height); result = GetDeviceCaps(HScreenDC, RASTERCAPS);
if (result & RC_PALETTE) { palette_size = GetDeviceCaps(HScreenDC, SIZEPALETTE);
if (palette_size == 256) { const size_t size = sizeof(LOGPALETTE) + 255 * sizeof(PALETTEENTRY); pBuffer = new unsigned char[size]; LPLOGPALETTE palette = reinterpret_cast<LPLOGPALETTE>(pBuffer);
palette->palVersion = 0x300; palette->palNumEntries = 256; GetSystemPaletteEntries(HScreenDC, 0, 256, palette->palPalEntry);
Image->Palette = CreatePalette(palette);
delete [] pBuffer; } } ReleaseDC(0, HScreenDC); BitBlt(Image->Canvas->Handle, 0, 0, Image->Width, Image->Height, window, 0, 0, SRCCOPY); Image->SaveToFile(pfad); }
//---------------------------------------------------------------------------
|
Wenn ich den nun Compiliere, dann kommen folgende Fehler:
[Linker Error] Unresolved external 'Graphics::TBitmap::' referenced from CUNIT1.OBJ
[Linker Error] Unresolved external '__fastcall Graphics::TBitmap::TBitmap()' referenced from CUNIT1.OBJ
[Linker Error] Unresolved external '__fastcall Forms::TScreen::GetHeight()' referenced from CUNIT1.OBJ
[Linker Error] Unresolved external 'Forms::Screen' referenced from CUNIT1.OBJ
[Linker Error] Unresolved external '__fastcall Forms::TScreen::GetWidth()' referenced from CUNIT1.OBJ
[Linker Error] Unresolved external '__fastcall Graphics::TBitmap::SetHandle(unsigned int)' referenced from CPROGRAMME\BORLAND\CBUILDER6\LIB\RELEASE\VCLE.LIB|_t_Graph
[Linker Error] Unresolved external '__fastcall Graphics::TBitmap::GetCanvas()' referenced from CUNIT1.OBJ
[Linker Error] Unresolved external '__fastcall Graphics::TCanvas::GetHandle()' referenced from CUNIT1.OBJ
THX im Voraus |