Я построил многоязычную программу обработки изображений программного обеспечения и сделал ее общедоступной с двоичными файлами для Mac OS X и Ubuntu. Бинарные файлы были протестированы в соответствующих операционных системах, и все работает отлично. Недавно я также попытался выпустить двоичные файлы для Windows (64 бит), но компилятор GCC (через MinGW-w64) дал мне предупреждения для одной из программ C при создании файла общей библиотеки (dll). Этого не произошло в Mac OS X или Ubuntu. Вот предупреждения и соответствующая строка кода в файле C:Предупреждение о компиляторе программы C только в Windows (MinGW-w64)
warning: passing argument 3 of '_beginthreadex' from incompatible pointer type [enabled by default]
Line 464:
ThreadList[i] = (HANDLE)_beginthreadex(NULL, 0, &ThreadFunc, &ThreadArgs[i] , 0, NULL);
Второй и чужд предупреждение:
c:\mingw\x86_64-w64-mingw32\include\process.h:31:29: note:
expected 'unsigned int <*><void *>' but argument is of type 'void * <*><void *>'
_CRTIMP uintptr_t _cdecl _beginthreadex<void *_Security,unsigned _Stacksize,unsigned <_stdcall *_StartAddress> <void *>,void *_ArgList,unsigned _InitFlag,unsigned *_ThrdAddr >;
Линия 34:
#include <process.h>
Это относится к в этом большем блоке кода:
/* Multithreading stuff*/
#ifdef _WIN32
#include <windows.h>
#include <process.h>
#else
#include <pthread.h>
#endif
#include <stdbool.h>
Проблема, кажется, исходит из #include <process.h>
так как для Mac OS X и Ubuntu #include <pthread.h>
используется. Любая помощь в определении этого? Полная программа C - here.
Это предупреждающее сообщение и, вероятно, безвредно. Если ваша программа неожиданно завершается при запуске, это, скорее всего, из-за чего-то другого. –
Другая программа, которую я скомпилировал без каких-либо предупреждений, успешно работает в составе этого программного обеспечения. Все остальные компоненты программного обеспечения работают нормально. А на Ubuntu и Mac OS X все программное обеспечение работает чудесно. Это оставляет этот файл C и предупреждающие сообщения. И я вижу из утверждений печати, что программа завершает работу в этом конкретном файле C. Это не может быть совпадением. – Haider
Это выглядит как красная сельдь. Но ты эксперт. –