Du bist nicht angemeldet.

Werbeanzeige

ByteJunkie

Alter Hase

  • »ByteJunkie« ist der Autor dieses Themas

Beiträge: 834

Wohnort: Deutschland

Beruf: Softwareentwickler

  • Private Nachricht senden

1

18.02.2017, 10:14

Tribase Release Problem

Hallo,

ich poste einfach mal das Problem mit der Releaserstellung:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1>------ Erstellen gestartet: Projekt: TriBase, Konfiguration: Release Win32 ------
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(990,5): warning MSB8012: TargetPath(E:\CPP10\TriBase\.\Release\TriBase.dll) entspricht nicht dem OutputFile-Eigenschaftswert (E:\CPP10\MysteryOutback\TriBase.dll) von Linker. Das Projekt wird daher möglicherweise nicht ordnungsgemäß erstellt. Damit dieses Problem behoben werden kann, müssen die Eigenschaftswerte für $(OutDir), $(TargetName) und $(TargetExt) dem in %(Link.OutputFile) angegebenen Wert entsprechen.
1>strmbased.lib(wxutil.obj) : error LNK2005: "public: __thiscall CCritSec::CCritSec(void)" (??0CCritSec@@QAE@XZ) ist bereits in tbVideo.obj definiert.
1>strmbased.lib(wxutil.obj) : error LNK2005: "public: __thiscall CCritSec::~CCritSec(void)" (??1CCritSec@@QAE@XZ) ist bereits in tbVideo.obj definiert.
1>strmbased.lib(wxutil.obj) : error LNK2005: "public: void __thiscall CCritSec::Lock(void)" (?Lock@CCritSec@@QAEXXZ) ist bereits in tbVideo.obj definiert.
1>strmbased.lib(wxutil.obj) : error LNK2005: "public: void __thiscall CCritSec::Unlock(void)" (?Unlock@CCritSec@@QAEXXZ) ist bereits in tbVideo.obj definiert.
1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __heap_alloc ist bereits in LIBCMT.lib(malloc.obj) definiert.
1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __recalloc ist bereits in LIBCMT.lib(recalloc.obj) definiert.
1>LIBCMTD.lib(dbgheap.obj) : error LNK2005: __msize ist bereits in LIBCMT.lib(msize.obj) definiert.
1>LIBCMTD.lib(dbghook.obj) : error LNK2005: __crt_debugger_hook ist bereits in LIBCMT.lib(dbghook.obj) definiert.
1>LIBCMTD.lib(isctype.obj) : error LNK2005: __isctype_l ist bereits in LIBCMT.lib(isctype.obj) definiert.
1>LIBCMTD.lib(isctype.obj) : error LNK2005: __isctype ist bereits in LIBCMT.lib(isctype.obj) definiert.
1>     Bibliothek ".\Lib\TriBase.lib" und Objekt ".\Lib\TriBase.exp" werden erstellt.
1>LINK : warning LNK4098: Standardbibliothek "LIBCMTD" steht in Konflikt mit anderen Bibliotheken; /NODEFAULTLIB:Bibliothek verwenden.
1>..\MysteryOutback\TriBase.dll : fatal error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========


Im Debug Modus wird das einfach ignoriert und als Warnung rausgegeben. Im Release Mode wird es als Fehler behandelt.
Ich finde keine Funktion CCritSec in tbVideo und wo in den Linkereinstellungen ich /NODEFAULTLIB:Bibliothek verwenden soll weiß ich auch nicht.
Es gibt da wohl 2 Einstellungen für Standard Bibliotheken.

Irgendwie weiß ich nicht so recht, wie ich damit umgehen soll.
"Alles bleibt wie immer. :rolleyes: Wenn es nicht besser wird, wird es schlimmer!." :huh:

ByteJunkie

Alter Hase

  • »ByteJunkie« ist der Autor dieses Themas

Beiträge: 834

Wohnort: Deutschland

Beruf: Softwareentwickler

  • Private Nachricht senden

2

18.02.2017, 10:29

Bin schon wieder etwas weiter. Jetzt kommt nur noch das hier:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
1>------ Erstellen gestartet: Projekt: TriBase, Konfiguration: Release Win32 ------
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Microsoft.CppBuild.targets(990,5): warning MSB8012: TargetPath(E:\CPP10\TriBase\.\Release\TriBase.dll) entspricht nicht dem OutputFile-Eigenschaftswert (E:\CPP10\MysteryOutback\TriBase.dll) von Linker. Das Projekt wird daher möglicherweise nicht ordnungsgemäß erstellt. Damit dieses Problem behoben werden kann, müssen die Eigenschaftswerte für $(OutDir), $(TargetName) und $(TargetExt) dem in %(Link.OutputFile) angegebenen Wert entsprechen.
1>strmbased.lib(wxutil.obj) : error LNK2005: "public: __thiscall CCritSec::CCritSec(void)" (??0CCritSec@@QAE@XZ) ist bereits in tbVideo.obj definiert.
1>strmbased.lib(wxutil.obj) : error LNK2005: "public: __thiscall CCritSec::~CCritSec(void)" (??1CCritSec@@QAE@XZ) ist bereits in tbVideo.obj definiert.
1>strmbased.lib(wxutil.obj) : error LNK2005: "public: void __thiscall CCritSec::Lock(void)" (?Lock@CCritSec@@QAEXXZ) ist bereits in tbVideo.obj definiert.
1>strmbased.lib(wxutil.obj) : error LNK2005: "public: void __thiscall CCritSec::Unlock(void)" (?Unlock@CCritSec@@QAEXXZ) ist bereits in tbVideo.obj definiert.
1>     Bibliothek ".\Lib\TriBase.lib" und Objekt ".\Lib\TriBase.exp" werden erstellt.
1>..\MysteryOutback\TriBase.dll : fatal error LNK1169: Mindestens ein mehrfach definiertes Symbol gefunden.
========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========
»ByteJunkie« hat folgendes Bild angehängt:
  • VC2010.jpg
"Alles bleibt wie immer. :rolleyes: Wenn es nicht besser wird, wird es schlimmer!." :huh:

ByteJunkie

Alter Hase

  • »ByteJunkie« ist der Autor dieses Themas

Beiträge: 834

Wohnort: Deutschland

Beruf: Softwareentwickler

  • Private Nachricht senden

3

18.02.2017, 11:16

Ich hab erst mal die tbVideo rausgeschmissen. Ist zwar nicht die eleganteste Lösung, aber so lässt sich die Tribase Release wenigstens erstellen. :D
"Alles bleibt wie immer. :rolleyes: Wenn es nicht besser wird, wird es schlimmer!." :huh:

4

18.02.2017, 17:08

Wenn ich die Warnung (vielleicht entstehen die Fehler durch das Problem, welches in der Warnung beschrieben wird) richtig interpretiere, passt daa Ziel-Verzeichnis nicht zum Ausgabe-Verzeichnis. Das kann man im Eigenschaftsblatt (Der Link zum Eigenschaftsblatt steht in der Warnung) ändern.
Ich kann das nicht testen (da ich nicht den gleichen Fehler habe) und es ist auch nur eine Vermutung.
Albert Einstein sagte: "2 Stunden mit einem netten Mädchen fühlen sich an wie 20 Minuten, 20 Minuten auf einem heißen Ofen fühlen sich an wie 2 Stunden. - Das ist Relativität"

ByteJunkie

Alter Hase

  • »ByteJunkie« ist der Autor dieses Themas

Beiträge: 834

Wohnort: Deutschland

Beruf: Softwareentwickler

  • Private Nachricht senden

5

18.02.2017, 17:11

Danke Patrick,

aber das Verzeichnis ist nur eine Warnung, kein Fehler, und nicht das eigentliche Problem.

Grüße
"Alles bleibt wie immer. :rolleyes: Wenn es nicht besser wird, wird es schlimmer!." :huh:

6

18.02.2017, 17:19

Wie gesagt, es ist nur eine Vermutung und nachdem daruf hingwiesen wird (in der Warnung), dass dadurch das Projekt nicht korrekt erstellt werden kann, dachte ich, dass das etwas damit zu tun haben könnte.
Albert Einstein sagte: "2 Stunden mit einem netten Mädchen fühlen sich an wie 20 Minuten, 20 Minuten auf einem heißen Ofen fühlen sich an wie 2 Stunden. - Das ist Relativität"

Werbeanzeige