Включение подставляемых функций вместо функций из рантайма
В приложении используется одна функция ceil(), из-за чего в зависимостях появляется MSVCR100. Насколько мне известно, можно использовать подставляемые функции, которые заменят вызов функции из библиотеки на развёрнутый код. Но какими бы ключами я не оперировал, исключить вызов функции из библиотеки у меня не получается. Подскажите, каким образом я могу это сделать?
Код:
double MyCeil(double x)
{
double rest;
rest = x - int(x);
if (rest == 0) {
return int(x);
} else {
return int(x) + 1;
}
}
{
double rest;
rest = x - int(x);
if (rest == 0) {
return int(x);
} else {
return int(x) + 1;
}
}
Откройте для себя статическую линковку.
Я бы с радостью, но в оцпиях студии есть только динамическая. А ещё эта статическая может не только то, что мне нужно, прилинковать, но и что не нужно. Всё-таки хотелось бы вспомнить, как делаются inline-функции (вернее, как они форсируются). Поиск на MSDN и не только ничего не дал.
А почему не сделать свою функцию?
Это будет чересчур :D Незачем изобретать велосипед, когда реализация уже есть. Мне вроде даже когда-то удавалось так сделать (тоже стояла задача отвязки от рантайма, потому что требовалась только пара вещественных функций), но я не могу вспомнить, в каком проекте, а сейчас всякие варианты перебирал и читал MSDN, но ничего не помогло.
Премного благодарен. А я что-то совсем заработался ☺
Это просто демонстрация, а не рабочий код.
В идеале нужно учитывать скольки разрядный комп, и дописать для отрицательных значений.
Код:
double MyCeil(double x)
{
double rest;
rest = x - INT64(x);
if (x >= 0) {
if (rest == 0) {
return x;
} else {
return INT64(x) + 1;
}
} else {
return x - rest;
}
}
{
double rest;
rest = x - INT64(x);
if (x >= 0) {
if (rest == 0) {
return x;
} else {
return INT64(x) + 1;
}
} else {
return x - rest;
}
}
Да у меня здесь всё сугубо положительное и 32-разрядное, поэтому спасибо за старания :) Ну и различий в этом коде для студий быть не должно, я думаю.
Прошу прощения за нетактичный вопрос. Вы это серьёзно, люди?
Что именно тебе не нравится?
Тотальное игнорирование/незнание того, что происходит в данном случае при кодогенерации и линковке, а соответственно и занятие писаниной на пустом месте. Да похоже и просто отсутствие понимания основополагающих принципов.
Ну нет, про статическую и динамическую линковку мне известно, но как в студии это сделать — хз. Может, ты прольёшь свет на что-то, чего не знаем мы.
Хотя казалось бы...
Обсасывалось неоднократно в том числе и на этом форуме.
Насколько мне известно, можно использовать подставляемые функции, которые заменят вызов функции из библиотеки на развёрнутый код.
Нет такие функции - на то и есть DLL это компиляция в машинный код, но есть Disassembler как вариант IDA, здесь надо ,знать хорошо Assembler т.к разговор идёт на уровне адресов. А потом конвертировать в код(я говорю про (C++) - это не есть проблема(+- на знания С++).
Но какими бы ключами я не оперировал, исключить вызов функции из библиотеки у меня не получается.
Честно не очень понятно об чём идёт разговор???
В данном контексте можно оперировать можно между киоском or Market
Or типа палёт на пальцах - может и будет ответ.
Хотя ответ тут(+1)
Цитата: Ramon
Прошу прощения за нетактичный вопрос. Вы это серьёзно, люди?