Я работаю над приложением C ++, которое использует JL-сервер LLVM для компиляции кода на лету. В этом JIT-скомпилированном коде я хочу иметь возможность вызывать все math.h
функции, но в настоящее время это работает только для некоторых из них, т.е. fabs
присутствует но fabsf
не является.
Похоже на символ fabs
находится в msvsrt.lib
библиотека времени выполнения, но не fabsf
хотя они оба объявлены в моей системе math.h
, Я ссылаюсь на неправильную библиотеку времени выполнения? Или мне нужно получить «расширенную» математическую DLL из другого места и также связать ее с этим?
C/C++ > Code Generation > Runtime library
= Многопоточная DLL (/MD
)Похоже, в некоторых случаях math.h определяет fabsf следующим образом (взято из math.h, включенного в MSVC2010 express)
#define fabsf(x) ((float)fabs((double)(x)))
Вероятно, ваша библиотека времени выполнения реализована таким образом, что означает, что fabsf вообще не существует, а «нормальный» fabsf заменяется препроцессором C вызовом _fabs ().
Других решений пока нет …