Сборка DLL через SCons
Полный SConstruct для отдельного расширения.
SCons здесь собирает пример DLL, а не движок. Возьмите native_probe.cpp и дескриптор из полного примера, установите SCons для выбранного Python и откройте x64 Developer PowerShell с MSVC.
Сохраните SConstruct:
import os
from SCons.Script import ARGUMENTS, Default, Environment, Exit
sdk = ARGUMENTS.get("sdk", "")
if os.name != "nt" or not os.path.isfile(os.path.join(sdk, "include", "reckfellextension_interface.h")):
print("Use Windows x64 and pass sdk=<installed ExtensionSDK directory>")
Exit(1)
env = Environment(ENV=dict(os.environ), MSVC_TARGETS=["amd64"],
CPPPATH=[os.path.join(sdk, "include")], CXXFLAGS=["/std:c++17", "/EHsc"])
Default(env.SharedLibrary(target="bin/native_probe.windows.x86_64.dll", source="native_probe.cpp"))Задайте $Sdk абсолютным путём к установленному ExtensionSDK:
python -m SCons "sdk=$Sdk" -Qpython должен обозначать интерпретатор с модулем SCons. Ошибка No module named SCons не является ошибкой SDK. Этот SConstruct не принимает параметры сборки движка вроде platform=windows или target=editor.
Результат — bin/native_probe.windows.x86_64.dll. Суффикс .dll указан явно: имя с промежуточными точками без правильного суффикса может быть неверно разобрано SharedLibrary. Положите DLL рядом с дескриптором и проверьте загрузку и константы.
Проверены установленный SCons, MSVC x64, сборка и загрузка. Другие компиляторы/платформы и сборка движка не проверялись.