Seite 1 von 1

[gelöst] Linker Problem mit _environ

Verfasst: 22. Dezember 2010 09:01
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.

Verfasst: 22. Dezember 2010 09:18
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().

Verfasst: 22. Dezember 2010 12:53
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.

Verfasst: 23. Dezember 2010 09:12
von BartSimpson
So das Problem ist gelöst.
Ich habe einfach die Zeile extrern char** envirion auskommentiert.
Und schon geht unter Windows alles.