cppunit编译,不知道为啥,好多人都报错

来源:互联网 发布:12306数据库.rar 编辑:程序博客网 时间:2024/04/30 06:30

CppUnit 1.11.6 http://sourceforge.net/projects/cppunit.
CppUnit muss leider selbst compiliert werden.
Sources:
cppunit-1.11.6.tar.gz
Doku:
cppunit-docs-1.11.6.tar.gz
Die benötigten Binaries compiliert (auf einem WinXP64-System, läuft auch an der FH)
cppunit-bin-1.11.6.zip (6 MB)

Build-Anleitung für die Interessierten (die Anleitung findet man auch im Sourcen-Archiv in der Datei "INSTALL-WIN32.txt"):

Die Projekt-Homepage ist hier:

  • Im Unterverzeichnis "src" die Visual-Studio-6-Workspace-Datei "CppUnitLibraries.dsw" mit Visual Studio öffnen. Es gibt eine Reihe von Abfragen ob der Workspace konvertiert werden soll, die alle mit "Ja" beantworten.
  • Im Menü "Erstellen" den Punkt "Batch erstellen..." wählen.
  • Im erscheinenden Dialog "Batch erstellen" auf "Alle auswählen" klicken und dann auf "Erstellen".
  • Beim ersten Durchlauf gibt es direkt im ersten Projekt "cppunit" diese Fehlermeldung:
    Copying target to lib/Das System kann den angegebenen Pfad nicht finden.0 Datei(en) kopiert.Project : error PRJ0019: Ein Tool hat einen Fehlercode aus folgender Quelle zurückgegeben: "Copying target to lib/" 
    Das scheint daran zu liegen dass das Verzeichnis "lib" zu dieser Zeit noch nicht erstellt ist.
    Lösung: Zweiter Build-Durchlauf (hierbei im Dialog "Batch erstellen" den Button "Neu erstellen" wählen sonst wird nicht komplett neu compiliert !)
  • Jetzt gibt es bei mir immer noch Fehler:
    MsDevCallerListCtrl.cpp./MsDevCallerListCtrl.cpp(67) : error C3505: Typbibliothek '{80CC9F66-E7D8-4DDD-85B6-D9E6CD0E93E2}' kann nicht geladen werden./MsDevCallerListCtrl.cpp(67) : fatal error C1104: Schwerwiegender Fehler beim Importieren der LibID: "80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" 
    Lösung in diesem Fall: Die Datei "MsDevCallerListCtrl.cpp" im Projekt "TestRunner" öffnen und den Import für die Typelib "dte80a.olb" (der hier über die GUID geht) ersetzen durch den absoluten Pfad:
    Aus:
    #import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("7.0") lcid("0") raw_interfaces_only named_guids 
    wird:
    #import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("8.0") lcid("0") raw_interfaces_only named_guids 
    Hierbei handelt es sich um den Import der Datei "dte80a.olb" im Verzeichnis "C:/Programme/Gemeinsame Dateien/Microsoft Shared/MSEnv/dte80a.olb". Scheinbar ist es egal was wir hier eintragen, es darf nur nicht "7.0" bei der Version stehen...
  • Das Projekt "DSPlugIn" wird immer noch in 2 Konfigurationen Buildfehler erzeugen. Wir benötigen es aber sowieso nicht da es nur mit Visual Studio 6 läuft. Die Fehler werden also ignoriert.
  • Jetzt liegen im Verzeichnis "lib" die benötigten Dateien. Von einigen Dateien gibt es mehrere Namens-Varianten. Konvention (am Beispiel "TestRunner.dll"):
    -Kein Zusatz (TestRunner.dll): Release-Modus, kein Unicode
    -Zusatz "u" am Dateinamen (testrunneru.dll): Release-Modus, Unicode-Unterstützung
    -Zusatz "d" am Dateinamen (testrunnerd.dll): Debug-Modus, kein Unicode
    -Zusatz "ud" am Dateinamen (testrunnerud.dll): Debug-Modus, Unicode-Unterstützung
    Wir werden mit den Debug-Varianten MIT Unicode-Unterstützung arbeiten, die Anleitung von Hr. Dreher bezieht sich auf die Variante OHNE Unicode.


Falls mit der von mir vorcompilierten Binary gearbeitet wird dann gibt es beim Compilieren 15 Warnungen dieser Art:

cppunitd.lib(Asserter.obj) : warning LNK4099: PDB "vc80.pdb" wurde nicht mit "C:/Temp/cppunit-1.11.6/lib/cppunitd.lib" oder an "c:/Temp/VS2005/MFCBasics/debug/vc80.pdb" gefunden; Objekt wird verknüpft, als ob keine Debuginformationen vorhanden wären.cppunitd.lib(Exception.obj) : warning LNK4099: PDB "vc80.pdb" wurde nicht mit "C:/Temp/cppunit-1.11.6/lib/cppunitd.lib" oder an "c:/Temp/VS2005/MFCBasics/debug/vc80.pdb" gefunden; Objekt wird verknüpft, als ob keine Debuginformationen vorhanden wären. 

Dies liegt daran dass im jeweiligen Debug-Verzeichnis eines jeden VC++-Projekts die präcompilierte Header-Datei "vc80.pdb" liegt. Eine lib-Datei die im Debug-Modus erstellt wurde referenziert diese pdb-Datei über ihren absoluten Pfad, das heißt sogar wenn ich die kompletten Debug-Verzeichnisse in die Datei packen würde würde die Anwendung nur dann ohne Fehler compilieren wenn die Pfade exakt mit denen auf dem Rechner übereinstimmen auf dem CppUnit compiliert wurde !
Ich emfehle deshalb jedem Studenten sich CppUnit für seinen Heim-PC nach obiger Anleitung zu compilieren und für seinen spezifischen Pfad bereitzuhalten.

根据修改能够顺利通过编译

原创粉丝点击