Вот такой код есть на си Код (Text): #include "windows.h" #ifdef __cplusplus extern "C" { #endif void tyu(void); #ifdef __cplusplus } #endif void tyu(void) { MessageBox(0,"saa",0,0); static int temp = 0; //static float tem = 0.0f; temp ++; //tem ++; } При компиляции я получаю obj и спокойно подключаю к асм прожекту. Но стоит раскоментировать 2 строки и при подключении полученного obj файла MASM выдаёт Бросил в папку с асмом эту либу. Теперь он пишет
Дык у меня есть уже EP в асм проекте. От сишной obj мне нужна только скомпиленная функция. Зачем для неё EP указывать. Т.е. эту tyu мне просто надо скомпилить на С++ и вставить в асм. В программе же не может быть 2 EP.
Это появляется не при компиляции сишной функции, а уже при компиляции на МАСМ Т.е. я вроде бы как получил obj нужной мне фу-ии, но при внедрении этого obj в MASM он и выдаёт вышеописанную ошибку. Код (Text): #include "windows.h" #ifdef __cplusplus extern "C" { #endif void tyu(void); #ifdef __cplusplus } #endif void tyu(void) { MessageBox(0,"saa",0,0); static int temp = 0; temp ++; } Вот этот код прекрасно компилируется в obj и вставляется в МАСМ. В отладчике это прекрасно видно, что он есть. Код (Text): #include "windows.h" #ifdef __cplusplus extern "C" { #endif void tyu(void); #ifdef __cplusplus } #endif void tyu(void) { MessageBox(0,"saa",0,0); static int temp = 0; static float tem = 0.0f; temp ++; tem ++; } А вот если я скомпилирую этот код, полученный obj внедряю в МАСМ и вот тут он являет мне ошибку cannot open file "uuid.lib"
Вот оно. Оказывается сишная функция отлично внедряется. Написал и классы и прочее, никаких проблем. НО до тех пока в сишной функции не появится работа с запятой. Как только я попытаюсь сложить что нить нецелочисленное, при компиляции такого obj файла, тут же он начинает требовать uuid.lib. Сравнил на выходе асм листы, возможно дело в _fltused, который появляется при работе с не целым числом. Кто то же наверняка сталкивался с подобным.
Я не сталкивался. Но операции над числами с плавающей запятой - достаточно сложная штука и их реализация может зависеть, например, от проца. Вот ты в тексте пишешь число с запятой, а компилятор в тексте объявляет _fltused, а где то, в стандартных либах языка есть строки, наподобии: ifdef _ftlused include "что то, что лежит в uuid.lib" endif Т.е. в этой библиотеке лежит объектный файл, который каким то макаром имеет отношение к вычислениям с плавающей запятой. И тебе, при использовании нецелочисленных, придется либо подключать эти библиотеки, либо писать какие то аналоги реализаций.