Mangling / Экспорт проблемы с Mingw - PullRequest
4 голосов
/ 21 февраля 2011

Я работаю над общей C ++ DLL, используя Netbeans и MinGW под Windows.

Мой первый вопрос: будут ли изменения в MinGW и Microsoft Visual C ++ разными?Я читал, что искажение зависит от компилятора - это правда?Мне нужно получить с помощью MinGW то же искажение, которое было бы у меня с MVC ++, будет ли это когда-либо возможно?

Я обнаружил, используя Dependency Walker, что экспортируемые функции также рассматриваются как C (и онине экспортируется как C в моем коде).Это зависит от ограничений DepWalker или по какой-то причине MinGW делает мою библиотеку экспортируемой как C?(Я проверил, что при использовании «экспорта C» я больше не вижу искажения, в то время как без, я вижу искажение имени (что отличается от того, что я ожидал, основываясь на MVC ++), но я все еще вижу значок «C» вместо «C ++»".

Вот команда связывания:

g++.exe -static-libgcc -static-libstdc++ -shared -o my.dll -s 1.o 2.o ... n.o other.dll -static

Заранее благодарим и наилучшими пожеланиями.

1 Ответ

6 голосов
/ 21 февраля 2011

Да, искажение имени зависит от компилятора.Он может даже меняться между версиями одного и того же компилятора.

Вы никогда не должны ожидать ничего от искажения и должны рассматривать его как черный ящик - никогда не полагайтесь, что он будет одинаковым или разным.

Если вам нужна связь между компиляторами, используйте extern "C".

...