Я пытаюсь повторить ошибку из устаревшего приложения VB4. Сам EXE не имеет API Windows в таблице импорта;вместо этого они все загружаются из библиотеки времени выполнения VB.
Я хочу воссоздать похожий сценарий, но с использованием C в Visual Studio. Позже я создам свой эквивалент DLL-библиотеки времени выполнения с импортом Windows API, однако первый шаг - убедиться, что в моей таблице EXE нет таблиц API-интерфейсов Windows.
До сих пор я почти все удалил из таблицы импорта. используя / SUBSYSTEM: CONSOLE, удалив все .LIB из Linker -> Input -> Additional Dependencies, и установив для библиотеки времени выполнения многопотоковую отладку (/ MTd).
Однако API-интерфейсы kernel32.dll все еще находятся в таблице импорта. Хотя я понимаю, что / SUBSYSTEM: NATIVE, как правило, для драйверов, я не уверен, что это то, что мне нужно использовать, однако я не смог получить минимальное приложение (то есть, которое запускает, а затем завершает работу без сбоев) для компиляции с этим параметром. .
Если я использую компоновщик -> Ввод -> Игнорировать все библиотеки по умолчанию -> Да (/ NODEFAULTLIB), я получаю следующие ошибки:
Severity Code Description Project File Line Suppression State Suppression State
Error LNK2001 unresolved external symbol _mainCRTStartup Minimalist C:\Users\chentiangemalc\source\repos\Minimalist\Minimalist\LINK 1
Error LNK2019 unresolved external symbol __RTC_CheckEsp referenced in function _main Minimalist C:\Users\chentiangemalc\source\repos\Minimalist\Minimalist\Minimalist.obj 1
Error LNK2001 unresolved external symbol __RTC_InitBase Minimalist C:\Users\chentiangemalc\source\repos\Minimalist\Minimalist\Minimalist.obj 1
Error LNK2001 unresolved external symbol __RTC_Shutdown Minimalist C:\Users\chentiangemalc\source\repos\Minimalist\Minimalist\Minimalist.obj 1
Код, который я пытаюсь скомпилироватьне включает в себя и просто:
int main()
{
}