[gelöst] Linker Problem mit _environ

Alles rund um die Programmierung mit Qt
Antworten
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

[gelöst] Linker Problem mit _environ

Beitrag von BartSimpson »

Guten Morgen Leute,
ich habe folgendes Problem, beim Übersetzten meckert am Schluss der Linker, das er _environ nicht auflösen kann. Weiß jemand in welcher Lib sich das unter Windows befindet?
Hier die Meldung:
C:\c++\fastcgi2\lib\plugins\CgiInterface\CgiRequest.cpp(26) : warning C4273: '_e
nviron' : inconsistent dll linkage
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\stdlib.h(
299) : see previous definition of '_environ'
Linking CXX static library CgiInterface.lib
[ 33%] Built target CgiInterface
Linking CXX shared library FastCgiQt0.so
CgiInterface.lib(CgiRequest.cpp.obj) : error LNK2001: unresolved external symbol
_environ
FastCgiQt0.so : fatal error LNK1120: 1 unresolved externals
LINK failed. with 1120
NMAKE : fatal error U1077: '"C:\Program Files (x86)\CMake 2.8\bin\cmake.exe"' :
return code '0xffffffff'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 10.0
\VC\Bin\amd64\nmake.exe"' : return code '0x2'
Stop.
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 10.0
\VC\Bin\amd64\nmake.exe"' : return code '0x2'
Stop.
Auf den Seiten von MS wird empfohlen getenv_s zu benutzten. Nur hat dieses ja ganz andere Parameter. Hat jemand eine Lösung? Danke.
Und allen schon mal ein Frohes Fest.
Dateianhänge
CgiRequest.cpp
Die cpp Datei wo es benutzt wird.
(1.85 KiB) 366-mal heruntergeladen
CgiRequest.h
Und die .h Datei dazu.
(1.22 KiB) 308-mal heruntergeladen
Zuletzt geändert von BartSimpson am 23. Dezember 2010 09:12, insgesamt 1-mal geändert.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag von franzf »

Kannst du evtl. erst das Warning beseitigen? Vllt. behebt das auch den Fehler.
http://msdn.microsoft.com/de-de/library ... S.80).aspx

Hab aber kein Windows, drum weiß ich nicht ob es hilft.
Die MS-Seiten sagen, du sollst _environ nicht verwenden, da das einfach nur eine globale Variable ist, der Zugriff potentiell unsicher. getenv() schaut dass das Ding initialisiert ist und initialisiert bei Notwendigkeit.
Ansonsten:
http://msdn.microsoft.com/de-de/library/ccdc34y7.aspx
The Microsoft run-time library provides the following global variables.
Also die MS-Runtime-lib ist es - keine Ahnung ob explizites Linken notwendig und wenn ja gegen welche Lib:
http://msdn.microsoft.com/en-us/library ... s.80).aspx

ansonsten: qgetenv, QProcess::systemEnvironment() resp. QProcessEnvironment::systemEnvironment().
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Das Problem an der Sache ist, das der Code von jemanden anders geschrieben worden ist. Und ich nicht so richtig nachvollziehen kann, was der da an der Stellen erreichen will.:( Sonst könnte man es ja ohne Probleme ändern.
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

So das Problem ist gelöst.
Ich habe einfach die Zeile extrern char** envirion auskommentiert.
Und schon geht unter Windows alles.
Antworten