Доброго времени суток! Есть одно решение, в котором находятся три проекта. При попытке компиляции проекта Bridge появляется следующая ошибка unresolved external symbol NtQueryInformationProcess Функции NtQueryInformationProcess объявлена в файле syscalls_all.h Реализация функции находится в syscalls_all_-asm.x64.asm Структура решения D:\Projects\Solution: │ Solution.sln ├───Additional │ ├───Build Events │ │ Post-Build.bat │ │ │ └───Include │ ├───lazy_importer │ │ lazy_importer.hpp │ │ │ ├───syscalls │ │ syscalls_all.c │ │ syscalls_all.h │ │ syscalls_all_-asm.x64.asm │ │ │ └───xorstr │ xorstr.hpp │ ├───Bridge │ Bridge.def │ Bridge.rc │ Bridge.vcxproj │ Bridge.vcxproj.filters │ Bridge.vcxproj.user │ DllMain.cpp │ ├───Loader │ Loader.rc │ Loader.vcxproj │ Loader.vcxproj.filters │ Loader.vcxproj.user │ Main.cpp │ └───Overlay DllMain.cpp Overlay.rc Overlay.vcxproj Overlay.vcxproj.filters Overlay.vcxproj.user Часть кода Bridge.cpp #include "syscalls/syscalls_all.h" В настройках проекта Bridge указал путь к Additional Include Directories $(SolutionDir)Additional\Include\ В Build Dependencies во всех трёх проектах выбрал поддержку masm. Очень не хотелось бы копировать этот файл во все три проекта (тогда видит), нельзя ли как-то прописать путь к папке как с #include?
Ошибка возникает из-за того, что в проект Bridge не линкуется ассемблерный файл. Ты подключаешь хедер, но линкер не знает, где искать реализацию. Здесь возможно два решения: 1. Сделать Additional отдельный проектом: создать для него vcxproj в виде статической библиотеки, которая будет собирать ассемблерный файлик, и подключать эту библиотеку как зависимость в других проектах, используя "Ссылки": 2. Не копировать .asm в каждый проект, как ты предложил выше, а оставить его в Additional, но подключить в каждый нужный проект (в частности, в Bridge) как обычный исходник - т.е., asm останется в Additional, но на него будут ссылаться другие проекты. Я бы выбрал первый вариант как самый идиоматичный.
если ещё заморочиться, то можно скрипт на питохе сделать, чтоб он собирал масмом либу и линковал бы её к проекту студии.
А пример поподробнее и попонятнее можно? Или как всегда информация из википедии, и на практике никогда не применялась?
HoShiMin, UbIvItS, В итоге сделал немного по другому, создал новый проект, добавил туда все файлы из папки syscalls и собрал как библиотеку которую в итоге подключил ко всем проектам без дополнительного копирования. Что-то забыл что так можно, всем спасибо!)
ежли линь, то сращивание питохи с башем примерно так выглядит .. cmd = f"g++ {cpp_flags} -o {bin_name} {sources}" os.system(cmd)
UbIvItS, вы гений! Объясните поподробней про VS 2022 и MASM на Linux, чтобы, вообще, не осталось сомневающихся в этом вопросе.
чой-то тебе совсем нечем по житуХЕ заняться.. окромя срачей под вынью - py + powershell + pywin32 и будет тебе счастье
сборка/отладка/отчёты - мейкфайл попрёт для сборки, но весь прикол питохи - возможность соорудить единую экосистему разработки.