Как я могу скомпилировать Программиста Дворжака?
Я пытаюсь скомпилировать проект с открытым исходным кодомПрограммист дворак, Проблема в том, что он немного старый и не собирается с текущими версиями инструментов сборки.
Вы можете увидеть полный исходный код с изменениями, которые я сделал онлайн на моемКодовая страница Google проекта. Редакция 2 это неизмененные исходные файлы из исходного проекта.Редакция 3 где я внес все существенные изменения. Вы можете увидетьразница между двумя ревизиями здесь.
Единственные очевидные проблемы, которые остались, - это несколько предупреждений LINK:
LNK4254 (например.section '.edata' (40000040) merged into '.data' (C0000040) with different attributes.
) - я задал автономный вариант вопросаВот.LNK4210 (например..CRT section exists; there may be unhandled static initializers or terminators
)Как мне исправить эти предупреждения?Могу ли я их игнорировать?
Несмотря на эти предупреждения, он все еще производит exe. Однако, если я продолжу его запускать, он не будет установлен правильно, и мне придется прибегнуть к восстановлению системы, чтобы снова установить официальную версию.
Это может быть из-за предупреждений или просто потому, что я неправильно изменил проект.
Что еще мне нужно сделать, чтобы этот проект можно было установить?
Процесс сборки (и объяснение моих модификаций):Он говорит, что вам нужен Windows DDK, но похоже, чтоWindows Driver Kit заменил его, так что я получил это вместо. Я только установил "Build Environments".
1. СогласноReadme.txt
, вы должны запустить:build-layout && build-installer
2.build-layout.bat
это запустить.Я должен был изменить th, это файл (увидеть разницу здесь):
WinDDK
путь был изменен, так как у меня есть более новая версия(MOD-1).set PATH=
...%WINDDK%\bin\x86\x86;
был добавлен сlink.exe
находится там(MOD-2).Вset INCLUDE=
, %WINDDK%\inc\wxp
был изменен на%WINDDK%\inc\api
, посколькуwxp
папка не существует, и я думаю, чтоapi
папка была нужна, так как она содержитkbd.h
, которыйkbddvp.c
использования(MOD-3).Заset LIB=
, %WINDDK%\lib\crt
был изменен на%WINDDK%\lib\crt\i386
, чтобыlibcmt.lib
можно найти. Смотрите MOD-7 ниже.(MOD-4)3.fkbddvp.mak
это запустить.Я должен был изменить этот файл (увидеть разницу здесь):
Путь для переменнойCL32
был изменен с$(WINDDK)\bin\x86\cl.exe
в$(WINDDK)\bin\x86\x86\cl.exe
, первый .exe не существует, я считаю, что это .exe, я должен использовать вместо этого.(MOD-5)Путь для переменнойCL64
был изменен с$(WINDDK)\bin\win64\x86\amd64\cl.exe
в$(WINDDK)\bin\x86\amd64\cl.exe
, это мое лучшее предположение о том, где находится отсутствующий .exe.(MOD-6)-opt:nowin98
удалено для подавления предупрежденияLNK4224 (Т.е./OPT:NOWIN98 is no longer supported
), какпредложенный Бобби. (MOD-10)Вместо использования несуществующегоlibc.lib
, Я используюlibcmt.lib
, Я читаюэта почта который рекомендует использовать этот файл вместо.(MOD-7)Вместо использования устаревшей утилитыcabarc
, Я используюmakecab
сmakecab-dir.ddf
, я взялмое лучшее предположение о том, как выполнить ту же логику с этой новой утилитой.(MOD-8)4.build-installer.bat
это запустить.Я должен был изменить этот файл (увидеть разницу здесь):
Это также использовалоcabarc
и я изменил его, чтобы использоватьmakcab
, аналогично MOD-8, за исключением того, что здесь он создает файл .ddf программно.(MOD-9)Полный выводВот полный вывод, если вы хотите его увидеть:
>build-layout && build-installer
"C:\WinDDK\7600.16385.1\bin\x86\x86\cl.exe" -nologo -c -I..\inc -Zp8 -Gy
-W3 -WX -Gz -Gm- -EHs-c- -GR- -GF -Zl -Oxs -D_WIN32_WINNT=0x0501 -Fokbddvp32.o
bj kbddvp.c
kbddvp.c
rc kbddvp.rc
Microsoft (R) Windows (R) Resource Compiler Version 6.1.6908.0
Copyright (C) Microsoft Corporation. All rights reserved.
link -machine:ix86 -nologo -dll -base:0x5FFF0000 -subsystem:native -def:
kbddvp.def -noentry -merge:.edata=.data -merge:.rdata=.data -merge:.text=.data
-merge:.bss=.data -ignore:4078,4070 -section:.data,re -stack:0x40000,0x1000 -op
t:ref,icf -release -out:kbddvp32.dll kbddvp32.obj kbddvp.res
Creating library kbddvp32.lib and object kbddvp32.exp
LINK : warning LNK4254: section '.edata' (40000040) merged into '.data' (C000004
0) with different attributes
LINK : warning LNK4254: section '.rdata' (40000040) merged into '.data' (C000004
0) with different attributes
LINK : warning LNK4254: section '.text' (60000020) merged into '.data' (C0000040
) with different attributes
LINK : warning LNK4254: section '.bss' (C0000080) merged into '.data' (C0000040)
with different attributes
"C:\WinDDK\7600.16385.1\bin\x86\amd64\cl.exe" -nologo -c -I..\inc -Zp8 -
Gy -W3 -WX -Gz -Gm- -EHs-c- -GR- -GF -Zl -Oxs -DBUILD_WOW6432 -D_WIN32_WINNT=0x
0501 -Fokbddvp64.obj kbddvp.c
kbddvp.c
link -machine:amd64 -nologo -dll -base:0x5FFE0000 -subsystem:native -def
:kbddvp.def -noentry -merge:.edata=.data -merge:.rdata=.data -merge:.text=.data
-merge:.bss=.data -ignore:4078,4070 -section:.data,re -stack:0x40000,0x1000 -o
pt:ref,icf -release -out:kbddvp64.dll kbddvp64.obj kbddvp.res
Creating library kbddvp64.lib and object kbddvp64.exp
LINK : warning LNK4254: section '.edata' (40000040) merged into '.data' (C000004
0) with different attributes
LINK : warning LNK4254: section '.rdata' (40000040) merged into '.data' (C000004
0) with different attributes
LINK : warning LNK4254: section '.text' (60000020) merged into '.data' (C0000040
) with different attributes
LINK : warning LNK4254: section '.bss' (C0000080) merged into '.data' (C0000040)
with different attributes
"C:\WinDDK\7600.16385.1\bin\x86\x86\cl.exe" -nologo -c -Folauncher.obj l
auncher.c
launcher.c
link -machine:ix86 -nologo -subsystem:windows -release -nodefaultlib -ou
t:launcher.exe launcher.obj kernel32.lib libcmt.lib user32.lib shell32.lib
libcmt.lib(cpu_disp.obj) : warning LNK4210: .CRT section exists; there may be un
handled static initializers or terminators
makecab /F makecab-dir.ddf
Microsoft (R) Cabinet Maker - Version 5.1.2600.5512
Copyright (c) Microsoft Corporation. All rights reserved..
27,686 bytes in 4 files
Total files: 4
Bytes before: 27,686
Bytes after: 8,140
After/Before: 29.40% compression
Time: 0.19 seconds ( 0 hr 0 min 0.19 sec)
Throughput: 144.58 Kb/second
iexpress /N /Q /M kbddvp.sed
1 file(s) copied.
Microsoft (R) Cabinet Maker - Version 5.1.2600.5512
Copyright (c) Microsoft Corporation. All rights reserved..
60,290 bytes in 16 files
Total files: 16
Bytes before: 60,290
Bytes after: 16,876
After/Before: 27.99% compression
Time: 0.27 seconds ( 0 hr 0 min 0.27 sec)
Throughput: 221.34 Kb/second