Проблемы искажения имен при использовании компоновщика GNU для ссылки на скомпилированную библиотеку VC ++ - PullRequest
0 голосов
/ 21 августа 2010

Задавая этот вопрос, я ищу либо лучшее понимание ситуации, либо, желательно, решение.

Я создал код C ++ и хотел бы иметь возможность использовать IDE Eclipse CDT, а не Visual Studios (мое рабочее место более дружественно к Eclipse). Это подразумевает, что, на практике, я должен использовать цепочку инструментов GNU для компиляции своего кода. Для проекта под рукой, я должен ссылаться на библиотеку под названием HyDE.lib, которая была скомпилирована с компилятором Visual Studios. Конечно, проблема, с которой я сталкиваюсь, заключается в том, что компоновщик GNU не может найти соответствующие символы в HyDE, потому что (я полагаю) оба компилятора используют разные схемы искажения имен.

Так как мне обойти это?

Текущие мысли:

  • Самым очевидным было бы перекомпилировать HyDE.lib с помощью цепочки инструментов GNU. Это оказывается сложнее, чем, возможно, стоит. Однако есть один путь, который я здесь не исследовал. У нас есть файл cmake, который якобы может быть собран в unix ... есть ли способ использовать cmake вместо Cygwin GNU? Я действительно ничего не знаю о cmake (и очень мало о make), поэтому ссылка на полезную информацию была бы хороша.
  • Я мог бы подключить Eclipse CDT к инструментам компилятора Window. Да, но лучше всего сказать, что это нелегко, и я потенциально потерял бы отладку и, возможно, даже завершение кода. Затем есть Eclipse Wascana, но я прочитал недавний блог, в котором говорилось, что сообщество Wascana ослабевает.
  • Есть ли какая-нибудь библиотека деманлер-реманглер? Я представляю себе программу, в которую я бы также включил скомпилированную библиотеку Windows, и программа выбрала бы символы, разобрала их, а затем создала библиотеку, которая имела те же символы, но искалечена способом GNU. На данный момент я придумываю вещи, так что, возможно, кто-то мог бы помочь мне лучше понять искажение имени здесь.

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 21 августа 2010

В качестве альтернативы завершите компиляцию библиотеки в файл .dll и используйте ее.Просто убедитесь, что точки входа расположены в extern "C" блоках.

0 голосов
/ 21 августа 2010

Если вы не поместите большую часть кода в HyDE.lib с блоками extern "C", то лучше всего перекомпилировать его с помощью G ++.Даже если вы разместите его в extern "C" блоках, я все равно рекомендую компилировать его с помощью G ++, поскольку обычно (но не всегда) он лучше поддерживает стандарты, чем MSVC.

...