Seite 1 von 1
C und Disphelper
Verfasst: 06.08.2009 17:30
von Andi
Ich muss, bevor ich mein Problem schildere, eines vorwegsagen: PB ist super. Das ist genau die Sprache, die ich brauche, um die von mir benötigten Anwendungen zu schreiben. Dazu gehört insbesondere das Einbinden von Word mittels PureDisphelper bzw. jetzt ComatePlus.
Ich habe mit C ein wenig angefangen, um meinen Programmierhorizont zu erweitern. Ich kann einfache GUIs erstellen, und nun will ich Word einbinden und zwar mittels der Disphelper-Lib. Aber ich bekomme beim Kompilieren die Fehlermeldung:
[Linker Error] undefined reference to 'WinMain@16'
Was mache ich da falsch??
PS
Ich benutze den Bloodshed-Compiler
Verfasst: 06.08.2009 17:44
von cxAlex
Andi hat geschrieben: Ich kann einfache GUIs erstellen, und nun will ich Word einbinden und zwar mittels der Disphelper-Lib. [...]
PS
Ich benutze den Bloodshed-Compiler
Du benutz einen PB Source/PB Userlib mit einem C Compiler?
Verfasst: 06.08.2009 17:44
von milan1612
Wenn WinMain nicht definiert ist, heißt das, dass du dein Projekt als Windows Anwendung
linken lässt, obwohl du keine WinMain Methode implementiert hast.
Es gibt 2 mögliche Lösungen dafür: Entweder lässt du deine Projekt als Konsolenprogramm kompilieren
(Stichwort Subsystem, so heißt das Ganze), oder du implementierst deine WinMain Methode
anstatt einer normalen int main(). Wie diese Funktion auszusehen hat, findest du via Google...
Verfasst: 06.08.2009 17:45
von milan1612
cxAlex hat geschrieben:Andi hat geschrieben: Ich kann einfache GUIs erstellen, und nun will ich Word einbinden und zwar mittels der Disphelper-Lib. [...]
PS
Ich benutze den Bloodshed-Compiler
Du benutz einen PB Source/PB Userlib mit einem C Compiler?
Für PB gibts die PureDisphelper Library welche eine Opensource Library namens Disphelper wrappt

Verfasst: 06.08.2009 17:48
von cxAlex
milan1612 hat geschrieben:
Für PB gibts die PureDisphelper Library welche eine Opensource Library namens Disphelper wrappt

Ah... Wieder mal was gelernt.
Gruß, Alex
Verfasst: 06.08.2009 18:32
von mk-soft
Der in PureDispHelper enthaltene DispHelper.lib ist für Purebasic von mir modifiziert worden.
Must dir mal den Orginalcode mal downloaden.
Verfasst: 07.08.2009 18:36
von Andi
Danke, für die Hinweise! In der Tat muss es eine Window Application sein und darf kein Konsolenprogramm sein. Ich habe jetzt die folgenden Zeilen C-Code am Anfang der int WINAPI WinMain(HINSTANCE hInstance,....):
Code: Alles auswählen
DISPATCH_OBJ(wdApp);
dhInitialize(TRUE);
dhToggleExceptions(TRUE);
dhCreateObject(L"Word.Application", NULL, &wdApp);
dhPutValue(wdApp, L".Visible = %b", TRUE);
dhCallMethod(wdApp, L".Documents.Add");
dhCallMethod(wdApp, L".Selection.TypeText(%S)", L"DispHelper Word sample!\n\n");
SAFE_RELEASE(wdApp);
dhUninitialize(TRUE);
Das klappt auch. Aber ich möchte, dass das Worddokument sozusagen auf Knopfdruck erstellt wird. Dazu habe ich einen Button erstellt. Wenn ich aber die obigen Zeilen in das Eventhandling (WM_Command) für diesen Button innerhalb der Callback-Prozedur packe, bleibt der Compiler schon bei DISPATCH_OBJ(wdApp) hängen und meldet: Syntax error before '*' token.
Wäre toll, wenn mir da jemand helfen könnte....
Verfasst: 10.08.2009 15:16
von Andi
Das Problem habe ich dadurch gelöst, indem ich die Zeile DISPATCH_OBJ(wdApp) vor die WinMain-Funktion gesetzt habe. Damit wird wdApp global und dann läuft es!
