Ich baue etwas auf HPUX. Code funktioniert in Sun/Linux/AIX.Unzufriedene Symbole in Debug aber nicht Release
Aber auf HPUX klagt sie auf
[sshexec] /usr/ccs/bin/ld: Unsatisfied symbols:
[sshexec] globalVar (first referenced in blah.o)
Wieder einmal Code in Release funktioniert aber nicht in Debug. Alles, was sie tut es globalen Variable verwendet in einer anderen Datei definiert
extern globPck globalVar;
globPck ist Klasse, die eine globalen Sachen cointains.
Ich interessiere mich mehr für Ideen, was der Grund dafür sein könnte, in Release zu arbeiten, aber nicht in Debug.
Ich schaute über .i-Dateien (vorkompilierte Header-Datei mit -E erzeugt) Und es scheint auf die gleiche Weise definiert.
Ich rate etwas, das im Release-Code-Pfad getroffen wird, behebt es, aber ich bin hier zu hören, wenn Sie alle Ideen haben.
es ist ziemlich seltsam, weil im Freigabemodus dieses Symbol nicht in .o Objekt ist (wenn Sie nm blah.o | grep globalVar tun. Es zeigt nur in Debug und ich sah und nirgends hat es #if DEBUG oder was nicht ... – grobartn
In dieser Situation würde ich eine Plausibilitätsprüfung machen: Absichtlich einen Syntaxfehler neben der Stelle hinzufügen, an der '' globalVar' 'definiert wird. Kompiliere im Freigabemodus und bestätige (durch einen Compilerfehler), dass der Compiler Wenn Sie keinen Fehler erhalten, kompiliert entweder der Compiler nicht die Datei, die Sie dachten, oder Sie müssen Ihre Suche nach dem '# ifdef erweitern, das den Zugriff auf Ihren Code blockiert. –