我需要爲包含的第三方庫設置兩個環境變量(當我的應用程序運行時)。SetEnvironmentVariable不起作用
的問題是,「這樣」這是不是然而工作, 當我運行控制檯應用程序,設置這兩個變量,然後運行該應用程序,一切都還好...
如何配置這兩種變數正確嗎?
我使用的過程:
function SetEnvVarValue(const VarName,
VarValue: string): Integer;
begin
// Simply call API function
if SetEnvironmentVariable(PChar(VarName),
PChar(VarValue)) then
Result := 0
else
Result := GetLastError;
end;
返回0
也許事情是,我有裝載在應用程序啓動時庫。 當我的應用程序明星我設置然後變量和我做得太晚...?
進一步信息
我已經包含在DPR兩個單元:
ImageMagick的在「C:\程序文件(x86)\ Borland的\ Delphi7的\ LIB \ Magick \ magick \ ImageMagick.pas ', magick_wand in'C:\ Program Files(x86)\ Borland \ Delphi7 \ Lib \ Magick \ wand \ magick_wand.pas';
,單位:
unit DoItFirst;
interface
uses
Windows, Sysutils;
var
s: string;
error: Integer;
function _putenv_s(const lpName, lpValue: PChar): BOOL; cdecl; external 'msvcrt.dll';
implementation
function GetEnvVarValue(const VarName: string): string;
var
BufSize: Integer; // buffer size required for value
begin
// Get required buffer size (inc. terminal #0)
BufSize := GetEnvironmentVariable(PChar(VarName), nil, 0);
if BufSize > 0 then
begin
// Read env var value into result string
SetLength(Result, BufSize - 1);
GetEnvironmentVariable(PChar(VarName),
PChar(Result), BufSize);
end
else
// No such environment variable
Result := '';
end;
initialization
_putenv_s(PChar('DYLD_LIBRARY_PATH'), PChar('g:\_projekty\ZBar Test\'));
_putenv_s(PChar('MAGICK_CODER_MODULE_PATH'), PChar('g:\_projekty\ZBar Test\modules\coders\'));
s := GetEnvVarValue('DYLD_LIBRARY_PATH');
s := GetEnvVarValue('MAGICK_CODER_MODULE_PATH');
end.
這個單位是在DPR文件的開頭。
SetEnvironmentVariable返回可通過GetLastError獲取的失敗的Windows錯誤代碼。你有什麼價值? –
返回0返回 – John
@John,聽起來像返回它的最佳時間,回報爲:-) – paxdiablo