Я написал библиотеку классов на C ++ и успешно скомпилировал ее в Linux с использованием g ++ в качестве общего объекта, а затем создал несколько приложений, которые ее используют.Теперь я должен перенести его на VS2008.Я дал всем классам необходимые префиксы __declspec (dllexport), а затем попытался скомпилировать его.Я получаю кучу предупреждений, которые в основном касаются:
- моих пользовательских классов исключений, производных от std :: runtime_error, которые выдают: "предупреждение C4275: класс не dll-интерфейса" std:: runtime_error 'используется в качестве базы для класса dll-интерфейса' cci :: FileOperationException '".Как я должен сделать стандартный библиотечный класс dll-exportable?
- спецификации исключений в объявлениях функций-членов, которые вызывают «предупреждение C4290: спецификация исключений C ++ игнорируется, за исключением указания на то, что функция не является __declspec (nothrow)»,Я где-то читал, что VS не поддерживает их, и что это делает где-то еще.Как это сбивает с толку.
Я читал людей, которые говорили, что экспорт классов в DLL - это, как правило, плохая идея, что существует множество вещей, которые могут пойти не так, и теперь у меня в голове полно таких понятий, какбинарная несовместимость, dll hell, несоответствие версий компилятора и т. д., и, честно говоря, я не могу понять, что это такое.Каков правильный, безопасный и простой способ создания общей библиотеки классов в Windows, тогда?
Спасибо.