Eine DLL in BlitzBasic selber schreiben/exe to dll/DLL mit C

Übersicht BlitzBasic DLLs und Userlibs

Neue Antwort erstellen

Samuel

Betreff: Eine DLL in BlitzBasic selber schreiben/exe to dll/DLL mit C

BeitragSa, Apr 23, 2011 20:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo zusammen

Ist es irgendwie möglich in BlitzBasic(BB3D/B+) eine DLL selber zu schreiben/erstellen?
Wenn "ja" dann wie?
Wenn "nein" gibt es dann irgendein Programm/Tool zum ohne grosse Vorkenntnisse eine DLL zu erstellen?


Oder wenn das nicht möglich ist(ok alles ist möglich).
Hat jemand einen Beispiel-Code für C/C++ oder so etwas in der Art.
Und mit welchem Compiler kann ich das machen?


Da ich nicht viel im Forum/Google gefunden habe hoffe ich jetzt hier auf eine brauchbare Antwort.
Vielen Dank im Voraus Smile

Gruss
Samuel

Starwar

BeitragSa, Apr 23, 2011 20:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier geht's los:
http://blitzbasic.com/sdkspecs..._specs.txt
Und da ein Beispiel:
http://blitzbasic.com/sdkspecs...s_demo.zip
MFG

EDIT: Das Beispiel dürfte VisualC++ sein.

EDIT2: Ich glaube ich habe dich falsch verstanden... Die Links zeigen dir, wie du eine DLL für BB schreiben kannst. In BB ist das nicht möglich. Wenn du eine allgemiene DLL schreiben möchtest gibts dazu in VisualStudio eine Vorlage oder schau mal in der msdn (http://www.msdn.com) rein.

Samuel

BeitragSa, Apr 23, 2011 21:12
Antworten mit Zitat
Benutzer-Profile anzeigen
OK hätte ja sein können das es mit BlitzBasic auch irgendwie geht...

Mit den beiden Links kann ich nicht viel anfangen(danke trotzdem) ich checks nicht Very Happy

http://www.msdn.com -> schau ich mir mal genauere an

Der Eisvogel

BeitragSa, Apr 23, 2011 21:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Mit BlitzMax ist es möglich DLL's zu erstellen.
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Samuel

BeitragSa, Apr 23, 2011 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
BlitzMax habe ich leider nicht(hab ich auch nicht vor mir anzueignen da ich vom arbeiten aus sowieso assebbler/c/c++ lernen muss - aber erst in 2 jahren Sad )

aber ein kollege von mir hat BlitzMax vielleicht kann er etwas für mich proggen....


Smile

Starwar

BeitragSa, Apr 23, 2011 22:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Man muss keine Angst vor C++ haben. Es ist gewöhnungsbedürftig, es ist eigen. Ich bin da kein Experte drin, aber mit einem guten Buch zur Seite versteht man was Sache ist. Und der Rest kommt wohl mit der Übung.
MFG

Samuel

BeitragSa, Apr 23, 2011 23:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja eben hab leider zuwenig Zeit Sad

aber da ich dann vom arbeiten aus Microcontroller programmieren muss - werde ich das dann sowieso lernen(ich habe einfach gedacht so als überbrückung Smile mit bb )
 

Eisbaer

Betreff: DLLs für BlitzBasic

BeitragSo, Apr 24, 2011 9:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du DLLs für BlitzBasic erstellen willst,
gibt es eine Freeware die dir das ermöglicht.

Syntax ist QBasic Basierend, und somit leicht zu erlernen, wenn man sich mit BlitzBasic auskennt.


http://www.freebasic.net (Official Developer Seite)

http://www.freebasic-portal.de (Deutsches Portal)

http://forum.qbasic.at (Das Deutsche QuickBasic & FreeBasic Forum)

Grüße
Eisbaer
Eigene Webseite:

http://www.eisbaer-studios.de

Xaymar

ehemals "Cgamer"

BeitragSo, Apr 24, 2011 12:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Oder man nimmt sich die zeit die syntax von cpp/c zu lernen und holt sich gcc/mingwgcc.
Denn dann kann solche Späße machen:
Code: [AUSKLAPPEN]
// XaymarHelper.cpp : Defines the entry point for the DLL application.
//

#include <windows.h>

#define DLL_EXPORT extern "C" _declspec(dllexport)
#define DLL_IMPORT extern "C" _declspec(dllimport)
#define DLL_CALL _stdcall

WNDPROC gBlitzProc;
HWND gBlitzWindow;
int iClose;
int MainMonitorX, MainMonitorY;
int MainMonitorW, MainMonitorH;

DLL_EXPORT int DLL_CALL InstallCloseHandler(char *BlitzWindowName);
DLL_EXPORT int DLL_CALL GetWindowClose();
DLL_EXPORT int DLL_CALL UnInstallCloseHandler();
DLL_EXPORT void DLL_CALL GetMainMonitorSize(int Bank);
DLL_EXPORT void DLL_CALL CursorBounds(int X, int Y, int W, int H);

BOOL APIENTRY DllMain( HANDLE hModule, DWORD  fdwReason, LPVOID lpReserved ) {
    return TRUE;
}

//Window Event Handler: Close
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) {
    switch(uMsg) {
    case WM_CLOSE:
        iClose = iClose+1;
        return true;
    default:
        return CallWindowProc(gBlitzProc, hwnd, uMsg, wParam, lParam);
    }
    return 0;
}
DLL_EXPORT int DLL_CALL GetWindowClose() {
    int RetVal;RetVal = iClose;
    iClose = iClose-1;
    if (iClose < 0) iClose = 0;
    return RetVal;
}
DLL_EXPORT int DLL_CALL InstallCloseHandler(char *BlitzWindowName) {
    gBlitzWindow = FindWindow("Blitz Runtime Class", BlitzWindowName);
    if(!gBlitzWindow) return false;
    gBlitzProc = (WNDPROC)SetWindowLong(gBlitzWindow, GWL_WNDPROC, (LONG)WindowProc);
    return true;
}
DLL_EXPORT int DLL_CALL UnInstallCloseHandler() {
    SetWindowLong(gBlitzWindow, GWL_WNDPROC, (LONG)gBlitzProc);
    return true;
}

//Get Main Monitor Size
BOOL CALLBACK MonitorEnumProc(HMONITOR hMonitor, HDC hdcMonitor, LPRECT lprcMonitor, LPARAM dwData) {
    MONITORINFO *moninfo = new MONITORINFO;
    moninfo->cbSize = sizeof( MONITORINFO );
    GetMonitorInfo(hMonitor, moninfo);
    if (moninfo->dwFlags == 1) {
        MainMonitorX = moninfo->rcMonitor.left;
        MainMonitorY = moninfo->rcMonitor.top;
        MainMonitorW = moninfo->rcMonitor.right;
        MainMonitorH = moninfo->rcMonitor.bottom;
    }
}
DLL_EXPORT void DLL_CALL GetMainMonitorSize(int Bank) {
    EnumDisplayMonitors(NULL,NULL,MonitorEnumProc,0);
    *(int*)(Bank+0) = MainMonitorX;
    *(int*)(Bank+4) = MainMonitorY;
    *(int*)(Bank+8) = MainMonitorW;
    *(int*)(Bank+12) = MainMonitorH;
}

//Mouse Stuff
DLL_EXPORT void DLL_CALL CursorBounds(int X, int Y, int W, int H) {
   RECT Area;
   Area.left = X;
   Area.top = Y;
   Area.right = X+W;
   Area.bottom = Y+H;
   ClipCursor(&Area);
}
Warbseite

Samuel

BeitragMo, Apr 25, 2011 17:04
Antworten mit Zitat
Benutzer-Profile anzeigen
vielen dank

ich werds mir genauer anschauen (http://www.freebasic-portal.de/)

Neue Antwort erstellen


Übersicht BlitzBasic DLLs und Userlibs

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group