| Autor |
Nachricht |
hermieweber
Mitglied
Benutzerprofil
Anmeldungsdatum: 28.01.2012
Beiträge: 13
|
hermieweber Mitglied
10:45:00 02.04.2012 Titel: |
VC2010 DLL debuggen |
Zitieren |
Hallo!
Ich möchte gerne das Beispiel SampleTTSEngine.sln aus dem Windows SDK (C:\Programs\Microsoft SDKs\Windows\v7.0\Samples\winui\speech\engines\samplettsengine)
auf meine Anwendung "übertragen".
Meine Anwendung ist bisher eine .exe, und ich möchte sie jetzt mit dem selben Interface wie wie SampleTtsEngine ausstatten.
Ich wollte gerne einfach mal das bestehende Beispiel debuggen, um zu schauen, was da überhaupt passiert.
Ich habe die Kompileroptionen auf "Debuggen" gestellt, aber wenn ich dann das Debuggen starte, sagt er mir "Das Programm "m:\samplettsengine\Debug\SampleTtsEngine.dll" kann nicht gestartet werden werden.
Wie ihr sehen könnt, habe ich das Projekt in einen anderen Ordner kopiert, weil ich dachte, es liegt vielleicht daran, dass ich im "Programme"-Ordner zu wenig Rechte habe.
Im Moment bin ich grade nicht sicher, warum er die DLL nicht debuggen möchte.
Über Hilfe würde ich mich sehr freuen.
Vielen Dank! |
|
|
|
 |
Jochen Kalmbach
Moderator
Benutzerprofil
Anmeldungsdatum: 11.11.2005
Beiträge: 12072
|
Jochen Kalmbach Moderator
10:55:01 02.04.2012 Titel: |
|
Zitieren |
Ja, Du brauchst irgendeine EXE, welche Deine DLL verwendet. Die kannst Du dann ein den Projekteinstellungen unter "Debuggen" eintragen. Diese Anwendung wird dann gestartet. Jetzt musst Du nur noch sicherstellen, dass diese Anwendung auch Deine DLL lädt! Das hängt natürlich von der jeweiligen Anwendung ab... |
_________________ Greetings
Jochen
(Microsoft MVP VC++) My blog about Win32 and .NET: http://blog.kalmbach-software.de/ (deutsch)
|
|
 |
hermieweber
Mitglied
Benutzerprofil
Anmeldungsdatum: 28.01.2012
Beiträge: 13
|
hermieweber Mitglied
13:52:58 02.04.2012 Titel: |
|
Zitieren |
Vielen Dank. Ich dachte grade, ich steh im Wald, als es dann auf Anhieb auch noch funktioniert hat. Ich konnte es kaum glauben.
Darf ich noch etwas fragen, bitte?
Ich habe im Moment eine Feld-Wald und Wiesen-DLL.
Die möchte/muss ich jetzt in eine COM-DLL umwandeln.
Ich habe das noch nie gemacht. Reicht es, wenn ich die COM-Methode/das COM-Interface implementiere, oder muss ich auch noch in den Projekteigenschaften irgendetwas ändern?
Ich habe jetzt einfach mal probiert, und er motzt jetzt z. B. in der Zeile
CComModule _Module;
Fehler 1 error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner '_Module' SampleTtsEngine.cpp 19 1 voice
Ich weiß nicht, was er da von mir will.
Vielen Dank. |
|
|
|
 |
Jochen Kalmbach
Moderator
Benutzerprofil
Anmeldungsdatum: 11.11.2005
Beiträge: 12072
|
Jochen Kalmbach Moderator
14:23:55 02.04.2012 Titel: |
|
Zitieren |
|
 |
hermieweber
Mitglied
Benutzerprofil
Anmeldungsdatum: 28.01.2012
Beiträge: 13
|
hermieweber Mitglied
16:57:08 02.04.2012 Titel: |
|
Zitieren |
Also ich denke mal, ich schaffe es nicht, zu vermitteln, dass ich ATL möchte (um mich mal so newbie-mäßig auszudrücken), aber ich habe in stdafx.h doch diese Zeilen hier drin:
#include <atlbase.h>
//You may derive a class from CComModule and use it if you want to override
//something, but do not change the name of _Module
extern CComModule _Module;
#include <atlcom.h>
Muss ich vielleicht im Projekteigenschaftenfenster oder so noch etwas umstellen?
Danke für die Hilfe. |
|
|
|
 |
hermieweber
Mitglied
Benutzerprofil
Anmeldungsdatum: 28.01.2012
Beiträge: 13
|
hermieweber Mitglied
17:40:44 02.04.2012 Titel: |
|
Zitieren |
Ich weiß nicht... Wo sehe ich denn, ob ich eine MFC-DLL habe? |
|
|
|
 |
hermieweber
Mitglied
Benutzerprofil
Anmeldungsdatum: 28.01.2012
Beiträge: 13
|
hermieweber Mitglied
17:43:13 02.04.2012 Titel: |
|
Zitieren |
Ich habe auf dem einem Monitor das Windows-Beispiel geöffnet, und auf dem anderen Monitor meine DLL.
Ich habe meines Wissens nach mein Projekt so angeglichen, dass es wie das Windows-Beispiel aussieht inklusive includes, etc.
Wenn das gemacht ist, und er motzt trotzdem so rum, was würdet ihr denn dann tippen, was ich noch falsch gemacht habe? |
|
|
|
 |
Jochen Kalmbach
Moderator
Benutzerprofil
Anmeldungsdatum: 11.11.2005
Beiträge: 12072
|
Jochen Kalmbach Moderator
19:33:01 02.04.2012 Titel: |
|
Zitieren |
Wenn Du ATL hast, dann sollte es auch gehen...
Am einfachsten ist es, wenn Du ein Projeklt neu anlegst, so wie Du es mit Deinem gemacht hast und dann eines mit aktiviertem COM-Server; dann vergleichst Du die beiden und siehst, was Du in Deinem bestehenden Projekt noch eintragen musst... |
_________________ Greetings
Jochen
(Microsoft MVP VC++) My blog about Win32 and .NET: http://blog.kalmbach-software.de/ (deutsch)
|
|
 |
hermieweber
Mitglied
Benutzerprofil
Anmeldungsdatum: 28.01.2012
Beiträge: 13
|
hermieweber Mitglied
20:05:17 02.04.2012 Titel: |
|
Zitieren |
Okay, ich hatte einen Teil des Codes vergessen übertragen...
Ich habe bitte noch eine Frage:
In dem Microsoft-Beispielprojekt gibt es eine .rc-Datei.
In dieser .rc-Datei steht:
#ifndef APSTUDIO_INVOKED
/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
1 TYPELIB "SampleTtsEngine.tlb"
#include "version.rc2"
Jetzt sagt er, dass die Datei SampleTtsEngine.tlb fehlt.
Ich könnte sie aus dem anderen Projekt rüberkopieren, denke ich, aber ich wüsste gerne, wie man selbst so eine .tlb-Datei erstellt.
Wenn da jemand die Antwort weiß, würde ich mich sehr freuen.
Vielen Dank!
Hermie |
|
|
|
 |
Martin Richter
Moderator
Benutzerprofil
Anmeldungsdatum: 18.04.2006
Beiträge: 14172
|
Martin Richter Moderator
22:30:55 02.04.2012 Titel: |
|
Zitieren |
Eine TLB Datei wird aus einer IDL Datei erzeugt. Also diese IDL Datei wird kompiliert und zur TLB. Diese Datei wird dann als Ressource eingebunden.
Und nein. Du kannst keine TLB aus einem anderen Projekt nehemn. Die TLB Datei muss genau zu Deinen Interfaces passen, die Du bauen möchtest. |
_________________ Martin Richter (MVP für C++) WWJD http://blog.m-ri.de
"A well-written program is its own heaven; a poorly written program is its own hell!" The Tao of Programming
|
|
 |