2016-03-31 5 views
1

Мне нужно использовать библиотеку C++ 11 в проекте bcc32. Библиотека не компилируется с помощью bcc32, а работает с bcc32c.Howto использовать на bcc32 статический lib, построенный с помощью bcc32c

Я хотел бы предотвратить публикацию этой библиотеки на DLL. Библиотека компилируется с помощью bcc32c, но я не смог использовать статические библиотеки bcc32c для проектов bcc32.

ответ

3

Статические библиотеки специфичны для компилятора. Вы не можете создать статический lib в одном компиляторе и использовать его в другом компиляторе. Ваши единственные варианты - либо обернуть статический lib внутри DLL, либо изменить код библиотеки, чтобы решить все, что мешает ему компилировать в bcc32.

+0

После тяжелой недели я пришел к выводу, что вы правы. Не только * bcc32c * и * bcc32 * несовместимы, классы DLL не могут использоваться совместно, а только 'extern 'C" '. Наверное, именно поэтому embarcadero отказался от борланд. – xvan

+0

@xvan: они «отказались» от компилятора Borland, потому что его внутренняя архитектура устарела и ограничена и никогда не сможет поддерживать C++ 11 и более поздние версии C++. Это не имело никакого отношения к отсутствию совместимости между компиляторами Borland и Embarcadero. Вы не можете скомпилировать статический lib в любом компиляторе, будь то Visual Studio или GCC или что-то еще, а затем использовать его с компилятором Embarcadero и наоборот. Иногда вы даже не можете использовать статические библиотеки для нескольких версий * * компилятора *. Как я уже сказал, статические библиотеки специфичны для конкретного компилятора. Живи с этим. –

Смежные вопросы