DLL - wie (mit was) erstellen und debuggen?
-
Hallo,
Ich habe mit Digital Mars C++ eines der Beispiele aus dem Photoshop SDK compiliert.
Ein paar Anpassungen waren dank des guten Kompilers und der IDE recht schnell erledigt.Das Plugin lädt in Photoshop und funktioniert.
Debuggen funktioniert aber leider nicht.
Das Problem besteht daraus, dass der Photoshop anscheinend Unmengen von int 3 Instruktionen in seinem Code hat, an denen der Debugger hängen bleibt.
Evtl. hängt es auch mit Multithreading zusammen, jedenfall wird ein Breakpoint in meinen Plugin nie erreicht, weil der Debugger immer wieder auf einer int 3 Instruktion stopptt.
Mit WinDBG hatte ich auch kein Glück - selbes Problem.Was könnte man sonst noch nehmen?
Kann man mit VC++ Express DLL's erstellen und debuggen?
Kann dieser Debugger mit int 3 Aufrufen der Hostapplikation umgehen?Geht das evtl. mit VC++ Standart und wie kann ich das sicher feststellen?
(Falls ich VC++ kaufe und dann gehts doch nicht, bin ich arm drandenn ich will mit dem Compiler ausschliesslich Grafik-Plugins schreiben und debuggen... :-\.
Vielen Dank im Voraus,
Peter
-
Kenne mich mit dem DMC nicht aus, kann mir aber nicht vorstellen, das er keinen DLLs erzeugen kann. Aber wissen andere bestimmt besser.
VC++ gibts aber seit letztem Jahr auch kostenlos, deshalb wird man unwahrscheinlich arm davon.
Und der Debugger ist wohl der beste für C++ auf dem Markt. Einfach mal ausprobieren:
http://msdn.microsoft.com/vstudio/express/visualc/default.aspx
Zu empfehlen ist aber die manuelle Installation, weil da keine Online-Registrierung nötig ist!
Das PlatformSDK nicht vergessen zu installieren! (4. Punkt beim Download)
-
Was sind denn int 3 Instruktionen???
Achja, habe hier die Express nicht, aber ich denke DLLs kann man damit erstellen.
-
Hallo Archi,
DMC++ kann ganz prima DLL'S erzeugen ... Das Problem liegt nur beim Debuggen.
Mit VC++ Express 2003 hatte ich schonmal einen Versuch gemacht.
Ich musste damals ziemlich viel ändern, bis ich das Plugin kompilieren konnte,
Includefiles umkopieren, editieren usw.
Dann lief es aber trotzdem nicht, weil der Ressourcekompiler Mist machte.
http://hphsite.de/test.png
Der Reinfall hat mich 2 Tage Arbeit gekostet.
(Links sieht man, wie es falsch ist, (VC++ EE), rechts wie es richtig ist (VC++ 5.0)D.h. ich hab schon ziemlich viel probiert. Mit VC++ 5.0 kann ich die Pluginprojekte einwandfrei kompilieren, aber nicht debuggen, weil "Attach to process" unter winxp nicht mehr funktioniert.
Bevor ich also nochmal viel Geld für ein so kurzlebiges Produkt ausgebe, muss ich /sicher/ wissen, ob es wenigstens tut
Peter
-
Ach ja, "int 3" ist der Befehl für den Softwareinterrupt Nr. 3.
Der Behl besteht nur aus einem Byte (afaik)
Normalerweise wird der vom Debugger in den Code geschrieben, um Breakpoints zu setzen. Warum Photoshop den im Code hat, weiss ich auch nicht, evtl. ist es ein Reengineering Schutz.Peter
-
Was ist denn Dein Problem?
Mit VC2005 EE kann man DLLs erstellen. Du solltest nur das PSDK installieren und die Schritte in der Anleitung durchführen.
Siehe top-post im WinAPI-Forum.Debuggen kannst Du natürlich auch.
Falls das Programm wirklich int3 drin hätte drücke einfach "weiter" (also F5), dann wird die Exception an das Programm weitergereicht und es sollte weiterlaufen.
Oder Du wartest bis das Programm gestartet ist und hängst Dich erst dann an den Prozess ran (Attach-Process)
-
Hi Jochen,
Ok danke für die konkrete Auskunft.
Ich werd's nochmal mit VC++ EE probieren.Peter
-
Hi Jochen,
ich hab's nun nochmal probiert und nun klappts.
Die Ressourcen wurden richtig kompiliert und ich kann mein Plugin auch debuggen.Allerdings hat VC++ EE keine Ressource Editor, muss mal sehen, ob ich mir mit nem
anderen behelfen kann oder ob auf die Dauer doch die Standard Version ins Haus
kommt.Grüsse,
Peter
-
In dem Top-Thread im WinAPI-Forum sind einige kostenlose (und auch gute) aufgeführt.
Wenn Du wirklich nur WinAPI oder C++/CLI machen willst, dann reicht eigentlich die EE vollkommen aus.
Die Standard brauchst Du eigentlich nur, wenn Du MFC/ATL verwenden willst...
-
Hi Jochen,
ich weiss noch nicht genau, wie ich weitermache, bin noch am rumsuchen.
Ich hab mit Windows-programmierung bzw. ganz allgemein mit GUI's keine Erfahrung. (Grundwissen ist aber vorhanden)
(Hab zuletzt vor 10 Jahren unter DOS ernsthaft programmiert)
Adobe rät von MFC ab, weil man da den new Operator nicht überschreiben könne...Evtl. wollte ich FLTK für die Oberfläche meiner Plugins verwenden.
(Keine Ahnung, ob das geht, muss noch schauen, aber die Lizenz ist kompatibelAusserdem frage ich mich, ob meine Plugins dann auf anderen Rechnern -ohne MSVC und ohne .NET- laufen werden.
Ich hab schon Einiges darüber gelesen es ist aber eher verwirrend als erhellend.
Leider kann ich das nicht so einfach ausprobieren - hab keinen 2t Rechner.Ach ja, ich müsste ja den Ressourceeditor von DMC++ oder von VC++ 5.0 verwenden können, die habe ich beide...
Grüsse,
Peter