MSVS 2010 - C Programm mit vielen Imports

Hallo,

Ich habe in MSVS 2010 ein C-Programm kompiliert, welches aber nach dem Compilen jede Menge Funktionen in der IAT hat, welche ich gar nicht benutze.

Auch nach längerem Suchen habe ich keine Option gefunden, mit welcher man die zuätzlichen Imports entfernen kann.

Konkret hat die exe folgende Imports:
Code:
function GetProcAddress(hModule: HMODULE; lpProcName: LPCSTR): FARPROC;
      stdcall; external 'kernel32.dll' name 'GetProcAddress' index 340; 

function GetModuleHandle(lpModuleName: PAnsiChar): HMODULE; stdcall;
      external 'kernel32.dll' name 'GetModuleHandleA' index 315; 

function GetCommandLine: PAnsiChar; stdcall;
      external 'kernel32.dll' name 'GetCommandLineA' index 219; 

// HeapSetInformation			Information not available

procedure GetStartupInfoW(var lpStartupInfo: TStartupInfo); stdcall;
      external 'kernel32.dll' name 'GetStartupInfoW' index 360; 

function SetUnhandledExceptionFilter(lpTopLevelExceptionFilter:
      TFNTopLevelExceptionFilter): TFNTopLevelExceptionFilter; stdcall;
      external 'kernel32.dll' name 'SetUnhandledExceptionFilter' index 697; 

function GetModuleHandleW(lpModuleName: PWideChar): HMODULE; stdcall;
      external 'kernel32.dll' name 'GetModuleHandleW' index 316; 

procedure ExitProcess(uExitCode: UINT); stdcall;
      external 'kernel32.dll' name 'ExitProcess' index 141; 

// DecodePointer			Information not available

function WriteFile(hFile: THandle; const Buffer; nNumberOfBytesToWrite: DWORD;
      var lpNumberOfBytesWritten: DWORD; lpOverlapped: POverlapped): BOOL;
      stdcall; external 'kernel32.dll' name 'WriteFile' index 783; 

function GetStdHandle(nStdHandle: DWORD): THandle; stdcall;
      external 'kernel32.dll' name 'GetStdHandle' index 361; 

function GetModuleFileNameW(hModule: HINST; lpFilename: PWideChar;
      nSize: DWORD): DWORD; stdcall;
      external 'kernel32.dll' name 'GetModuleFileNameW' index 314; 

function GetModuleFileName(hModule: HINST; lpFilename: PAnsiChar;
      nSize: DWORD): DWORD; stdcall;
      external 'kernel32.dll' name 'GetModuleFileNameA' index 313; 

function FreeEnvironmentStringsW(p1: PWideChar): BOOL; stdcall;
      external 'kernel32.dll' name 'FreeEnvironmentStringsW' index 195; 

function WideCharToMultiByte(CodePage: UINT; dwFlags: DWORD;
      lpWideCharStr: LPWSTR; cchWideChar: Integer; lpMultiByteStr: LPSTR;
      cchMultiByte: Integer; lpDefaultChar: LPCSTR;
      lpUsedDefaultChar: PBOOL): Integer; stdcall;
      external 'kernel32.dll' name 'WideCharToMultiByte' index 770; 

function GetEnvironmentStringsW: PWideChar; stdcall;
      external 'kernel32.dll' name 'GetEnvironmentStringsW' index 284; 

function SetHandleCount(uNumber: UINT): UINT; stdcall;
      external 'kernel32.dll' name 'SetHandleCount' index 665; 

function InitializeCriticalSectionAndSpinCount(var lpCriticalSection:
      TRTLCriticalSection; dwSpinCount: DWORD): BOOL; stdcall;
      external 'kernel32.dll' name 'InitializeCriticalSectionAndSpinCount' 
      index 455; 

function GetFileType(hFile: THandle): DWORD; stdcall;
      external 'kernel32.dll' name 'GetFileType' index 297; 

procedure DeleteCriticalSection(var lpCriticalSection: TRTLCriticalSection);
      stdcall; external 'kernel32.dll' name 'DeleteCriticalSection' index 91; 

// EncodePointer			Information not available

function TlsAlloc: DWORD; stdcall;
      external 'kernel32.dll' name 'TlsAlloc' index 721; 

function TlsGetValue(dwTlsIndex: DWORD): Pointer; stdcall;
      external 'kernel32.dll' name 'TlsGetValue' index 723; 

function TlsSetValue(dwTlsIndex: DWORD; lpTlsValue: Pointer): BOOL; stdcall;
      external 'kernel32.dll' name 'TlsSetValue' index 724; 

function TlsFree(dwTlsIndex: DWORD): BOOL; stdcall;
      external 'kernel32.dll' name 'TlsFree' index 722; 

function InterlockedIncrement(var Addend: Integer): Integer; stdcall;
      external 'kernel32.dll' name 'InterlockedIncrement' index 460; 

procedure SetLastError(dwErrCode: DWORD); stdcall;
      external 'kernel32.dll' name 'SetLastError' index 669; 

function GetCurrentThreadId: DWORD; stdcall;
      external 'kernel32.dll' name 'GetCurrentThreadId' index 269; 

function GetLastError: DWORD; stdcall;
      external 'kernel32.dll' name 'GetLastError' index 302; 

function InterlockedDecrement(var Addend: Integer): Integer; stdcall;
      external 'kernel32.dll' name 'InterlockedDecrement' index 457; 

function HeapCreate(flOptions, dwInitialSize, dwMaximumSize: DWORD): THandle;
      stdcall; external 'kernel32.dll' name 'HeapCreate' index 439; 

function QueryPerformanceCounter(var lpPerformanceCount: TLargeInteger): BOOL;
      stdcall;
      external 'kernel32.dll' name 'QueryPerformanceCounter' index 556; 

function GetTickCount: DWORD; stdcall;
      external 'kernel32.dll' name 'GetTickCount' index 391; 

function GetCurrentProcessId: DWORD; stdcall;
      external 'kernel32.dll' name 'GetCurrentProcessId' index 267; 

procedure GetSystemTimeAsFileTime(var lpSystemTimeAsFileTime: TFileTime);
      stdcall;
      external 'kernel32.dll' name 'GetSystemTimeAsFileTime' index 375; 

procedure LeaveCriticalSection(var lpCriticalSection: TRTLCriticalSection);
      stdcall; external 'kernel32.dll' name 'LeaveCriticalSection' index 479; 

procedure EnterCriticalSection(var lpCriticalSection: TRTLCriticalSection);
      stdcall; external 'kernel32.dll' name 'EnterCriticalSection' index 112; 

function LoadLibraryW(lpLibFileName: PWideChar): HMODULE; stdcall;
      external 'kernel32.dll' name 'LoadLibraryW' index 483; 

function UnhandledExceptionFilter(const ExceptionInfo: TExceptionPointers):
      Longint; stdcall;
      external 'kernel32.dll' name 'UnhandledExceptionFilter' index 732; 

// IsDebuggerPresent			Information not available

function TerminateProcess(hProcess: THandle; uExitCode: UINT): BOOL; stdcall;
      external 'kernel32.dll' name 'TerminateProcess' index 716; 

function GetCurrentProcess: THandle; stdcall;
      external 'kernel32.dll' name 'GetCurrentProcess' index 266; 

function GetCPInfo(CodePage: UINT; var lpCPInfo: TCPInfo): BOOL; stdcall;
      external 'kernel32.dll' name 'GetCPInfo' index 208; 

function GetACP: UINT; stdcall;
      external 'kernel32.dll' name 'GetACP' index 202; 

function GetOEMCP: UINT; stdcall;
      external 'kernel32.dll' name 'GetOEMCP' index 327; 

function IsValidCodePage(CodePage: UINT): BOOL; stdcall;
      external 'kernel32.dll' name 'IsValidCodePage' index 474; 

function HeapFree(hHeap: THandle; dwFlags: DWORD; lpMem: Pointer): BOOL;
      stdcall; external 'kernel32.dll' name 'HeapFree' index 443; 

procedure Sleep(dwMilliseconds: DWORD); stdcall;
      external 'kernel32.dll' name 'Sleep' index 708; 

// RtlUnwind				Information not available

function HeapSize(hHeap: THandle; dwFlags: DWORD; lpMem: Pointer): DWORD;
      stdcall; external 'kernel32.dll' name 'HeapSize' index 447; 

function LCMapStringW(Locale: LCID; dwMapFlags: DWORD; lpSrcStr: PWideChar;
      cchSrc: Integer; lpDestStr: PWideChar; cchDest: Integer): Integer;
      stdcall; external 'kernel32.dll' name 'LCMapStringW' index 478; 

function MultiByteToWideChar(CodePage: UINT; dwFlags: DWORD;
      const lpMultiByteStr: LPCSTR; cchMultiByte: Integer;
      lpWideCharStr: LPWSTR; cchWideChar: Integer): Integer; stdcall;
      external 'kernel32.dll' name 'MultiByteToWideChar' index 515; 

function GetStringTypeW(dwInfoType: DWORD; const lpSrcStr: WCHAR;
      cchSrc: BOOL; var lpCharType: Word): BOOL;
      external 'kernel32.dll' name 'GetStringTypeW' index 365; 

function HeapAlloc(hHeap: THandle; dwFlags, dwBytes: DWORD): Pointer; stdcall;
      external 'kernel32.dll' name 'HeapAlloc' index 437; 

function HeapReAlloc(hHeap: THandle; dwFlags: DWORD; lpMem: Pointer;
      dwBytes: DWORD): Pointer; stdcall;
      external 'kernel32.dll' name 'HeapReAlloc' index 446; 

function IsProcessorFeaturePresent(ProcessorFeature: DWORD): BOOL; stdcall;
      external 'kernel32.dll' name 'IsProcessorFeaturePresent' index 472;
Die einzigen Funktionen, die ich in meinem Code nutze sind die ersten drei. Wie bekomme ich nun die restlichen Imports weg ?


Compiler Optionen
Code:
/Zi /nologo /W1 /WX- /Od /Oy- /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /Gm- /MT /GS- /Gy- /fp:precise /Zc:wchar_t /Zc:forScope /Yu"header.h" /Fp"Release\Prog.pch" /Fa"Release\" /Fo"Release\" /Fd"Release\vc100.pdb" /Gd /TC /analyze- /errorReport:queue

Linker Optionen
Code:
/NOLOGO "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /MANIFEST /ManifestFile:"Release\Prog.exe.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:QUEUE


MrSpider
 
Geht nicht. Wird größtenteils für Initcode vom Compiler gebraucht.
 
Zurück
Oben