Seite 3 von 13 ErsteErste 1234567 ... LetzteLetzte
Ergebnis 31 bis 45 von 188

Thema: DLL kreieren - Probleme, Hilferufe und Erfahrungsberichte

  1. #31
    hat den Blues Avatar von Elwood
    Registriert seit
    05.11.07
    Beiträge
    4.352
    Hei Commander, ich versuch mich mal im Helfen, aber ich bin mir nicht sicher, wer hier jetzt der Einäugige und wer der Blinde ist

    Erst mal hat mir dein Thread und deine Fragen/Probleme hier schon viel geholfen, vieles habe ich anfangs gelesen, nicht verstanden und eine Stunde später hatte ich den selben Salat, aber der Reihe nach:

    Ich habe mich nach einem Hinweis von koma auch vor allem an dieser Anleitung hier orientiert, das makefile ist von hier, ich habe nur das makefile benutzt, da fastdep schon bei den Quelldaten von Writing Bull dabei war. Die Pfade für sdk und toolkit sind natürlich an deren Plätze auf meiner Platte angepasst, fastdep musste ich glaube ich noch aktivieren, indem ich die Auskommentierung raus genommen habe.

    Für den Grundaufbau habe ich neben dem Tutorial das folgende Vorgehen von koma beherzigt:

    Zitat Zitat von koma13
    Hi Elwood ,

    Um aus den TAC-Quellen ein Verzeichnis zu erstellen, daß sich in VS als Projektgrundlage nutzen lässt, bin ich immer so vorgegangen:

    1) Kopie des CvGameCoreDLL-Ordners (der aus deinem Col2-Programm-Verzeichnis) erstellen. Damit hast du dann die Vanilla-Quellen.
    2) Da dann die TAC-Quellen reinkopieren (und vorhandene Dateien überschreiben).
    3) Im Hauptverzeichnis deines DLL-Ordners alle VS-Projekt-Dateien löschen, so daß nur noch folgende Dateien übrig sind:
    *.h
    *.cpp
    *.inl
    CvGameCoreDLL.rc
    Makefile
    rmf.bat
    slashdel.bat
    Die 3 Verzeichnisse (bin, Boost-1.32.0 und Python24) werden benötigt, also nicht löschen.
    Damit solltest du eine solide Basis haben, um die DLL kompilieren zu können.

    Auch enthält das dort mit enthaltene makefile keine Adressierung auf den Colonization Ordner, wie es bei den bts-core Sachen der Fall ist, dort sieht es so aus:

    Code:
    #### Paths ####
    TOOLKIT=C:\Program Files\visual_toolkit\Microsoft Visual C++ Toolkit 2003
    PSDK=C:\Program Files\windows_platform_sdk\WindowsSDK
    CIVINSTALL=G:\Civilization IV\Beyond the Sword
    GLOBALBOOST=$(CIVINSTALL)\CvGameCoreDLL\Boost-1.32.0
    GLOBALPYTHON=$(CIVINSTALL)\CvGameCoreDLL\Python24
    ## Uncomment to have newly compiled dlls copied to your mod's Assets directory
    #YOURMOD=$(CIVINSTALL)\Mods\MyMod

    bei dem von Writing Bull verlinkten nur so:

    Code:
    #### Paths ####
    TOOLKIT=C:\Program Files\visual_toolkit\Microsoft Visual C++ Toolkit 2003
    PSDK=C:\Program Files\windows_platform_sdk\WindowsSDK
    ## Uncomment to have newly compiled dlls copied to your mod's Assets directory
    #YOURMOD=C:\Users\Danny\Documents\My Games\beyond the sword\MODS\MyMod
    Ist das in Ordnung, oder muss ich da was ergänzen?
    Das kannst du machen, wie du möchtest.

    Bei der ersten Variante greift die makefile auf den Boost- und Python-Ordner direkt im Colonization-Verzeichnis zu. Das hat den Vorteil, daß du diese beiden Ordner im Projektverzeichnis löschen kannst. Das spart ein wenig Speicher auf deiner Festplatte, mehr nicht.

    Bei der zweiten Variante (TAC makefile) holt er sich die beiden Ordner (Boost, Python) direkt aus dem Projektverzeichnis, daß du bei der Projekterstellung angegeben hast.
    Aus den Hinweisen von dir und melcher hier im Thread habe ich entnommen, dass der Umbennenungsvorgang Release/Final_Release nicht nötig ist, wenn das makefile bereits auf Release statt Final_Release getrimmt ist, was das von koma verlinkte ist. (... und ja bei den Umbennenungsversuchen zuvor ging mir auch nmake verloren ), also habe ich einfach Release gelassen und nur die Einträge für "Build Command Line", "Rebuild All Command Line" und "Clean Command Line" enstprechend der Anleitung ergänzt.

    Tja, und dann hat es bei mir geklappt , die Fehler, die du im vorherigen Post verlinkt hast, hatte ich so nicht. Visual meckerte noch etwas von einer fehlenden "CvGameCoreDLL.exe", aber erst nach dem Kompilieren, eine fertige und funktionierende DLL lag dann trotzdem im Release-Ordner.

    ich hoffe sehr, dass dir das was nützt, vielleicht habe ich auch wirklich nur Glück gehabt, ich kann leider nicht behaupten, dass ich wirklich wusste, was ich da tat.
    Geschichten zum Lesen ...

    Der seltsame Fall des William Penn | Col II --- TaC-Mod | abgebrochen
    Wahnsinn mit Methode? | Col II --- TaC-Mod | beendet | SdM April 2012
    Visiting Vvardenfell | TES III Morrowind | pausiert
    Es war einmal (noch) kein Portugal | Civ IV --- PAE-Mod | beendet
    Pack die Thermohose ein ... | Icewind Dale --- Trials of the Luremaster | läuft
    NEU: [RL] ... wie Gott nach Frankreich - Elwoods ??? | Modellbaubericht | läuft

  2. #32
    Ein Platz an der Sonne Avatar von Commander Bello
    Registriert seit
    05.06.05
    Ort
    Nähe Koblenz
    Beiträge
    6.209
    Erst mal Dank für deine Antwort!

    Sowohl die Anleitung wie das zugrundeliegende Makefile aus deinem Posting verwende ich ebenfalls.

    Darf ich fragen, welche VS-Version du benutzt? Ich gewinne allmählich den Eindruck, dass 2010 vielleicht nicht die allererste Wahl ist.


  3. #33
    Ein Platz an der Sonne Avatar von Commander Bello
    Registriert seit
    05.06.05
    Ort
    Nähe Koblenz
    Beiträge
    6.209
    Ich begreife es einfach nicht.

    Ich muss irgendetwas grundsätzlich falsch machen , aber ich weiß nicht, was.

    Ich habe jetzt Visual C++ 2008 installiert. Dabei habe ich den Standardpfad belassen.
    Dann habe ich, um alle möglichen Probleme auszuschließen, die Dateien für TAC ins CvGameCoreDLL-Verzeichnis kopiert.

    Das Makefile habe ich folgendermaßen angepasst:
    #### Paths ####
    TOOLKIT=C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC
    PSDK=C:\Program Files\Microsoft SDKs\Windows\v7.0A
    ## Uncomment to have newly compiled dlls copied to your mod's Assets directory
    #YOURMOD=C:\Users\Danny\Documents\My Games\beyond the sword\MODS\MyMod
    Die in den Projekteigenschaften eingetragenen Befehle für die Befehlszeilen (command lines) lauten:
    nmake Debug
    nmake Debug_cleannmake Debug
    nmake Debug_clean

    nmake Release
    nmake Release_cleannmake Release
    nmake Release_clean

    Dann starte ich die Erzeugung und erhalte solche Fehler, die schließlich zum Abbrechen führen:
    1>CvPlayerAI.cpp(1926) : error C2065: 'iI' : undeclared identifier
    1>CvPlayerAI.cpp(6765) : error C2065: 'pNode' : undeclared identifier
    1>CvPlayerAI.cpp(6769) : error C2227: left of '->m_data' must point to class/struct/union/generic type
    1>CvPlayerAI.cpp(8999) : error C2780: 'const _Ty &std::max(const _Ty &,const _Ty &,_Pr)' : expects 3 arguments - 2 provided
    1> C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include\xutility(3390) : see declaration of 'std::max'

    1>NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin\cl.exe"' : return code '0x2'
    1>Stop.
    1>Project : error PRJ0019: A tool returned an error code from "Performing Makefile project actions"
    1>Build log was saved at "file://d:\050_Spiele\010_Strat\Col\Mods\990_Create_DLL\CvGameCoreDLL\Debug\BuildLog.htm"
    Das BuildLog habe ich angehängt (als .txt-Datei).
    Das Makefile ist ebenfalls angehängt.

    Prinzipiell erhalte ich die gleichen Fehler wie gestern schon mit Visual Studio 2010, es scheint also kein Problem der Version zu sein, sondern eines, das vor dem Monitor sitzt.

    Ich verstehe diese Fehlermeldungen nicht, bzw. verstehe nicht, dass sie bei mir vorkommen. Ich verwende die Dateien, die zur erfolgreichen Erstellung der TAC-dll benutzt wurden. Wo liegt der Fehler???

    Nachtrag: Windows und sämtliche MS-Programme sind auf dem neuesten Update-Stand (heute 11:55)
    Angehängte Dateien Angehängte Dateien
    Geändert von Commander Bello (12. November 2012 um 14:07 Uhr)


  4. #34
    Col-Modder Avatar von raystuttgart
    Registriert seit
    19.03.10
    Ort
    Stuttgart
    Beiträge
    4.585
    Hallo C.B.,

    die Meldungen hier haben doch nix mit deiner Entwicklungsumgebung zu tun.

    1>CvPlayerAI.cpp(1926) : error C2065: 'iI' : undeclared identifier
    1>CvPlayerAI.cpp(6765) : error C2065: 'pNode' : undeclared identifier
    1>CvPlayerAI.cpp(6769) : error C2227: left of '->m_data' must point to class/struct/union/generic type
    1>CvPlayerAI.cpp(8999) : error C2780: 'const _Ty &std::max(const _Ty &,const _Ty &,_Pr)' : expects 3 arguments - 2 provided

    Das sind alles Fehler im C++ Code.

    Um die DLL zu modden, musst du halt schon auch verstehen, wie man C++ programmiert ...
    Sorry, aber C++ musst du dir schon selber beibringen.

    Zitat Zitat von Commander Bello Beitrag anzeigen
    Ich verstehe diese Fehlermeldungen nicht, bzw. verstehe nicht, dass sie bei mir vorkommen. Ich verwende die Dateien, die zur erfolgreichen Erstellung der TAC-dll benutzt wurden. Wo liegt der Fehler???
    Sicher ?
    Du hast also keine eigenen Änderungen drin ?
    Geändert von raystuttgart (12. November 2012 um 14:43 Uhr)
    Teammitgleid dieses Projekt für Colonization:
    [Mod] We The People
    (Nachfolgerprojekt von Religion and Revolution)

    Davor Teammitgleid dieses Projekt für Colonization:
    [Mod] Religion and Revolution

    Vor-Vorheriges Projekt für Colonization:
    [ModMod] ray's Wunschliste

    Und wiederum davor Teammitglied von:
    [Mod] The Authentic Colonization (TAC)

  5. #35
    Ein Platz an der Sonne Avatar von Commander Bello
    Registriert seit
    05.06.05
    Ort
    Nähe Koblenz
    Beiträge
    6.209
    Zitat Zitat von raystuttgart Beitrag anzeigen
    Hallo C.B.,

    die Meldungen hier haben doch nix mit deiner Entwicklungsumgebung zu tun.

    1>CvPlayerAI.cpp(1926) : error C2065: 'iI' : undeclared identifier
    1>CvPlayerAI.cpp(6765) : error C2065: 'pNode' : undeclared identifier
    1>CvPlayerAI.cpp(6769) : error C2227: left of '->m_data' must point to class/struct/union/generic type
    1>CvPlayerAI.cpp(8999) : error C2780: 'const _Ty &std::max(const _Ty &,const _Ty &,_Pr)' : expects 3 arguments - 2 provided

    Das sind alles Fehler im C++ Code !

    Um die DLL zu modden, musst du halt schon auch verstehen, wie man C++ programmiert ...
    Sorry, aber C++ musst du dir schon selber beibringen.



    Sicher ?
    Du hast also keine eigenen Änderungen drin ?
    Nein. Aus genau diesem kühlen Grunde verstehe ich auch das Auftreten dieser Fehlermeldungen nicht.

    Dass es sich dabei im C++-Fehlermeldungen handelt, ist mir schon klar. Nur ist mir nicht klar, wie solche Fehlermeldunge in den Originaldateien (gestern) resp. in den TAC-Dateien (heute) entstehen können. Diese Dateien sind ja offensichtlich für die eine oder andere Kompilation schon mal verwendet wurden.

    Ich habe den CvGameCoreDLL-Ordner von Civ:Col kopiert, und dann die bei TAC mitgelieferten Dateien hineinkopiert. Nicht eine dieser Dateien (bis auf das Makefile) ist von mir angefasst worden.
    Ziel ist es, erst einmal sicherzustellen, dass die Kompilation als solche funktioniert.

    Noch einmal in aller Deutlichkeit: ich erhalte Fehlermeldungen aus (unveränderten) Dateien, die mehrfach von anderen verwendet wurden und bei diesen anderen offensichtlich keine Fehler verursacht haben.
    Das legt den Schluss nahe, dass sich der Fehler nicht ursächlich in diesen Dateien, sondern in meiner Vorgehensweise verbirgt.


  6. #36
    Col-Modder Avatar von raystuttgart
    Registriert seit
    19.03.10
    Ort
    Stuttgart
    Beiträge
    4.585
    Zitat Zitat von Commander Bello Beitrag anzeigen
    Ich habe den CvGameCoreDLL-Ordner von Civ:Col kopiert, und dann die bei TAC mitgelieferten Dateien hineinkopiert. Nicht eine dieser Dateien (bis auf das Makefile) ist von mir angefasst worden.
    Ziel ist es, erst einmal sicherzustellen, dass die Kompilation als solche funktioniert.
    Ok, dann verstehe ich glaube ich, was da schiefgeht.

    1. Keinen Source-Code von Vanilla verwenden.
    2. Du brauchst den vollständigen Source-Code der DLL von TAC (bzw. der damaligen Version) und nicht den Diff zur vorhergegangen Version.
    Teammitgleid dieses Projekt für Colonization:
    [Mod] We The People
    (Nachfolgerprojekt von Religion and Revolution)

    Davor Teammitgleid dieses Projekt für Colonization:
    [Mod] Religion and Revolution

    Vor-Vorheriges Projekt für Colonization:
    [ModMod] ray's Wunschliste

    Und wiederum davor Teammitglied von:
    [Mod] The Authentic Colonization (TAC)

  7. #37
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Das einzige was auffällt ist, das alle Fehler aus der selben Datei stammen. Kannst du die "CvPlayerAI.cpp"-Datei hier hochladen?

    Was anderes macht mich da auch stutzig. Wieso beschwert er sich, dass er die Versionsnummer des Compilers nicht erkennt?

  8. #38
    Ein Platz an der Sonne Avatar von Commander Bello
    Registriert seit
    05.06.05
    Ort
    Nähe Koblenz
    Beiträge
    6.209
    Zitat Zitat von alpha civ Beitrag anzeigen
    Das einzige was auffällt ist, das alle Fehler aus der selben Datei stammen. Kannst du die "CvPlayerAI.cpp"-Datei hier hochladen?

    Was anderes macht mich da auch stutzig. Wieso beschwert er sich, dass er die Versionsnummer des Compilers nicht erkennt?
    Here you go:
    Angehängte Dateien Angehängte Dateien


  9. #39
    Ein Platz an der Sonne Avatar von Commander Bello
    Registriert seit
    05.06.05
    Ort
    Nähe Koblenz
    Beiträge
    6.209
    Zitat Zitat von raystuttgart Beitrag anzeigen
    Ok, dann verstehe ich glaube ich, was da schiefgeht.

    1. Keinen Source-Code von Vanilla verwenden.
    2. Du brauchst den vollständigen Source-Code der DLL von TAC (bzw. der damaligen Version) und nicht den Diff zur vorhergegangen Version.
    Das wiederum verstehe ich nicht.

    Ich habe den Sourcecode von Vanilla genommen und mit dem von TAC überschrieben. Was unverändert geblieben sein sollte, können also nur Vanilla-Dateien sein (die per Definition korrekt sein sollten), die in TAC nicht geändert wurden.


  10. #40
    Registrierter Benutzer Avatar von alpha civ
    Registriert seit
    22.07.06
    Beiträge
    16.757
    Zitat Zitat von Commander Bello Beitrag anzeigen
    Here you go:
    Sind definitiv C++ Fehler, d.h. diese Datei ist fehlerhaft. Entweder selbst korrigieren, oder die richtige Datei nehmen.

  11. #41
    Col-Modder Avatar von raystuttgart
    Registriert seit
    19.03.10
    Ort
    Stuttgart
    Beiträge
    4.585
    Zitat Zitat von Commander Bello Beitrag anzeigen
    Das wiederum verstehe ich nicht.
    Glaub es mir einfach.

    Keinen Source-Code von Vanilla als Basis nehmen.

    Stattdessen einfach das komplette Gesamtpacket der Sourcen von der TAC-Version nutzen, die als Basis für die DLL gedient hat.
    (Keinen Diff zur vorhergegangenen TAC-Version. Das würde natürlich nicht ausreichen.)
    Teammitgleid dieses Projekt für Colonization:
    [Mod] We The People
    (Nachfolgerprojekt von Religion and Revolution)

    Davor Teammitgleid dieses Projekt für Colonization:
    [Mod] Religion and Revolution

    Vor-Vorheriges Projekt für Colonization:
    [ModMod] ray's Wunschliste

    Und wiederum davor Teammitglied von:
    [Mod] The Authentic Colonization (TAC)

  12. #42
    Ein Platz an der Sonne Avatar von Commander Bello
    Registriert seit
    05.06.05
    Ort
    Nähe Koblenz
    Beiträge
    6.209
    Zitat Zitat von alpha civ Beitrag anzeigen
    Sind definitiv C++ Fehler, d.h. diese Datei ist fehlerhaft. Entweder selbst korrigieren, oder die richtige Datei nehmen.
    Ich habe die CvPlayerAI.cpp jetzt mal mit DiffMerge verglichen (Vanilla <-> TAC). Bei den angegebenen Fehlerzeilen sind beide Dateien identisch.

    Mit anderen Worten, es gibt keine "richtige" Datei - die "Fehler" treten schon im Originalcoding auf. Das allein ist schon eher merkwürdig.
    Noch merkwürdiger ist jedoch, dass diese Fehler dem Anschein nach nur bei mir, nicht aber bei allen anderen Moddern auftreten.


  13. #43
    Col-Modder Avatar von raystuttgart
    Registriert seit
    19.03.10
    Ort
    Stuttgart
    Beiträge
    4.585
    Zitat Zitat von Commander Bello Beitrag anzeigen
    Mit anderen Worten, es gibt keine "richtige" Datei - die "Fehler" treten schon im Originalcoding auf. Das allein ist schon eher merkwürdig.
    Ist es nicht, wenn man C++ versteht.
    (Das hat mit anderen Zusammenhängen z.B. zwischen .h und .cpp aber auch den Sourcen untereinander zu tun.)

    Glaube es mir doch bitte einfach und benutze das vollständige Packet der Sourcen, dass für die Erstellung der DLL genutzt wurde.

    Du kannst einfach nicht bunt Sourcen mischen und glauben, dass das nachher funktioniert.
    (Die einzelnen Source-Dateien haben Abhängigkeiten untereinander.)
    Geändert von raystuttgart (12. November 2012 um 16:30 Uhr)
    Teammitgleid dieses Projekt für Colonization:
    [Mod] We The People
    (Nachfolgerprojekt von Religion and Revolution)

    Davor Teammitgleid dieses Projekt für Colonization:
    [Mod] Religion and Revolution

    Vor-Vorheriges Projekt für Colonization:
    [ModMod] ray's Wunschliste

    Und wiederum davor Teammitglied von:
    [Mod] The Authentic Colonization (TAC)

  14. #44
    Col-Modder Avatar von raystuttgart
    Registriert seit
    19.03.10
    Ort
    Stuttgart
    Beiträge
    4.585
    @C.B.:

    Kompilier dir doch bitte erstmal eine DLL aus den Vanilla Sourcen.
    Wenn das geht, dann weißt du wenigstens, dass deine Entwicklungsumgebung und deine Projektkonfiguration richtig aufgesetzt wurden.

    Edit:

    Alternativ kannst du zum Test auch mal die (vollständigen) Sourcen von Religion and Revolution kompilieren.
    (Die sind im Download unserer Mod dabei.)

    Edit 2:

    Hast du dir die TAC Sourcen auch hier raus geholt ?
    ...\TAC 2.03_final\TAC Dokumentation\Dokumentation DLL
    Geändert von raystuttgart (12. November 2012 um 19:06 Uhr)
    Teammitgleid dieses Projekt für Colonization:
    [Mod] We The People
    (Nachfolgerprojekt von Religion and Revolution)

    Davor Teammitgleid dieses Projekt für Colonization:
    [Mod] Religion and Revolution

    Vor-Vorheriges Projekt für Colonization:
    [ModMod] ray's Wunschliste

    Und wiederum davor Teammitglied von:
    [Mod] The Authentic Colonization (TAC)

  15. #45
    hat den Blues Avatar von Elwood
    Registriert seit
    05.11.07
    Beiträge
    4.352
    Hmm, also wenn ich mir das so durchlese, dann hast du wirklich nichts anders gemacht als ich ... An Ideen hätte ich nur:

    - Dein Toolkitpfad (TOOLKIT=C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC) hat Leerzeichen, vielleicht das toolkit woanders hin packen?
    - Laut komas Hinweisen nimmt man wirklich die Col2-Vanilla-dll-Sourcen als Grundlage, über die werden dann die entsprechenden TaC-Sourcen kopiert:
    1) Kopie des CvGameCoreDLL-Ordners (der aus deinem Col2-Programm-Verzeichnis) erstellen. Damit hast du dann die Vanilla-Quellen.
    2) Da dann die TAC-Quellen reinkopieren (und vorhandene Dateien überschreiben).
    3) Im Hauptverzeichnis deines DLL-Ordners alle VS-Projekt-Dateien löschen, so daß nur noch folgende Dateien übrig sind:
    - probier doch sonst mal, wie ray vorschlägt, den r&r-core oder den bts-core zu kompilieren, wenn das geht, dann ist dein Setting zumindest schon mal in Ordnung
    Geschichten zum Lesen ...

    Der seltsame Fall des William Penn | Col II --- TaC-Mod | abgebrochen
    Wahnsinn mit Methode? | Col II --- TaC-Mod | beendet | SdM April 2012
    Visiting Vvardenfell | TES III Morrowind | pausiert
    Es war einmal (noch) kein Portugal | Civ IV --- PAE-Mod | beendet
    Pack die Thermohose ein ... | Icewind Dale --- Trials of the Luremaster | läuft
    NEU: [RL] ... wie Gott nach Frankreich - Elwoods ??? | Modellbaubericht | läuft

Seite 3 von 13 ErsteErste 1234567 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •