В файле * .cpp пытается использовать стороннюю библиотеку:
#define DLL_IMPORT
#include <thirdParty.h>
// Third party header has code like:
// #ifdef DLL_IMPORT
// #define DLL_DECL __declspec(dllimport)
// fatal error C1001: An internal error has occurred in the compiler.
Альтернатива:
#define NO_DLL
#include <thirdParty.h>
// Third party header has code like:
// #elif defined(NO_DLL)
// #define DLL_DECL// Compiles fine, but linker errors as can't find DLL functions
Я могу воспроизвести результаты, удалив все вместе макросы и #define, и вручную отредактировав сторонние файлы, чтобы иметь __declspec (dllimport) или нет — так что материал препроцессора выше просто показывает, что происходит, это не копирование-вставка.
Кто-нибудь сталкивался с чем-либо подобным или может намекнуть на причину? (который создается с помощью CMake). Выше приведен пример сбоя 2 строки * .cpp, поэтому он сужается до чего-то в #include.
Следующие также работают нормально:
Я просмотрел страницы настроек двух проектов, чтобы попытаться найти различия, но они оказались пустыми. Конечно, возможно, я что-то упускаю, так как эти страницы настроек не самые простые в навигации. Я получу доступ к VS2008 через день или около того, так что можете сравнить с этим. Сторонняя библиотека — MySql ++.
Сбой компилятора определенно является ошибкой в компиляторе, поэтому лучше всего отправлять отчет об ошибках в команду Microsoft Visual C ++.
Что касается ошибки
#define DLL_DECL __declspec(dllimport)
это неправильный способ идти о вещах. Должны быть некоторые настройки проекта, которые вы должны установить, директива предварительной обработки, которую вы можете определить вместо DLL_DECL
или просто включив другой файл.
Оказывается, это произошло потому, что предварительно скомпилированные заголовки были включены для проекта, пытающегося использовать DLL.