Информация об изменениях

Сообщение Re: JNI DLL и MSVCR от 13.03.2020 13:12

Изменено 13.03.2020 13:14 morgot

Re: JNI DLL и MSVCR
Здравствуйте, vsb, Вы писали:

vsb>4. Отключать CRT и писать на чистом WinAPI. В принципе почитал, похоже на хак, но вроде должно заработать? Как я понял, самое геморное это то, что компилятор будет генерировать вызовы некоторых функций и без моего участия, поэтому, возможно, придётся несколько функций скопипастить откуда-то? Вроде не так уж страшно.


Самый правильный вариант, и в нем нет ничего сложного. Да, студия очень любит совать црт везде, но — отключить его вполне реально. Придется только объявить через pragma две функции (или три), memset,memcpy, т.к. объявления вида char a[] = {0}; это memset (почему студия не умеет, как бесплатный PellesC, разрабатываемый одним человеком), заменять это на инлайн асм — вопрос риторический..

Ну не суть. Еще можно попробовать вот такой хак:
Re: JNI DLL и MSVCR
Здравствуйте, vsb, Вы писали:

vsb>4. Отключать CRT и писать на чистом WinAPI. В принципе почитал, похоже на хак, но вроде должно заработать? Как я понял, самое геморное это то, что компилятор будет генерировать вызовы некоторых функций и без моего участия, поэтому, возможно, придётся несколько функций скопипастить откуда-то? Вроде не так уж страшно.


Самый правильный вариант, и в нем нет ничего сложного. Да, студия очень любит совать црт везде, но — отключить его вполне реально. Придется только объявить через pragma две функции (или три), memset,memcpy, т.к. объявления вида char a[] = {0}; это memset (почему студия не умеет, как бесплатный PellesC, разрабатываемый одним человеком), заменять это на инлайн асм — вопрос риторический..

Ну не суть. Еще можно попробовать вот такой хак:
https://m.habrahabr.ru/post/87016/
https://m.habrahabr.ru/post/236355/
https://www.codeproject.com/Articles/15156/Tiny-C-Runtime-Library

Линковать статически — глупо, как и таскать дллки с собой. Если не хотите заморочиться всем вышеперечисленным, то ставьте VC redistributable.

А еще есть хороший вариант. Скачать Pelles C, там есть импорт студийного проекта, и в нем уже закодить как угодно.

Еще можно поставить VC6, она юзает тот CRT, что есть в винде.