Как я могу скомпилировать Программиста Дворжака?

Я пытаюсь скомпилировать проект с открытым исходным кодомПрограммист дворак, Проблема в том, что он немного старый и не собирается с текущими версиями инструментов сборки.

Вы можете увидеть полный исходный код с изменениями, которые я сделал онлайн на моемКодовая страница 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

Ответы на вопрос(7)

Ваш ответ на вопрос