2012-06-29 4 views
5

için Mingw çoklu tanımı Bu soruyu zaten sormuştum ama saatlerce bu sorunu çözemedim._Wnwind_resume

Temel olarak kod içinde bir DLL ve buna çağıran bir uygulama var. Her şey iyi çalışıyor ama geliştirme ortamımın dışında iki tane alırsam, programın libgcc_s_dw2 1.dll bilgisayardan eksik olması nedeniyle başlatılamayacağını söylüyor.

Bir geliştirme bilgisayarı olmadığından, bu yeterince adildir. Yani dağıtım için "-static-libgcc -static-libstdc++" derleyici bayraklarını ekledim. Bunu dll ve uygulama için yaptım.

"multiple definition of `_Unwind_Resume'"

Bu dll ve onları yerleşik statik kütüphanelerini olan bir uygulama hem kaynaklandığını düşündü ve öyle: Uygulamayı derleme yaparken

Ama hata alıyorum. Ancak her ikisinin de yerleşik statik kütüphaneleri yoksa, program son kullanıcı makinelerinde çalışmayacaktır.

Bu hatayı, mingw libs'de hala bağımlılığı olmadan nasıl kaldırabilirim? IDE'm Kod :: Bloklar.

c:/mingw/bin/../lib/gcc/mingw32/4.6.2/libgcc_eh.a(unwind-dw2.o):(.text+0x298c): multiple definition of `_Unwind_Resume' 

..\EquilibriumEngine\bin\Release\libEquilibriumEngine.dll.a(d000015.o):(.text+0x0): first defined here 

collect2: ld returned 1 exit status 

Process terminated with status 1 (0 minutes, 0 seconds) 

2 errors, 0 warnings 
+0

Eklemek Can ne olursa olsun günlük Code :: Blocks boyunca/link derlemek için kullanılan komutları içerir yapı (bir şey için vardır hangi uyarı ve hatalarla sonuçlanırsa)? –

+2

Belki de bu cevap http://stackoverflow.com/questions/8765215/multiple-definitions-of-unwind-resume size neyin yanlış olduğuna dair bazı ipuçları verir. – Arnestig

cevap

1

bağlayıcı bayrağı -static yalnızca tekrar edin: David

DÜZENLEME

: dll bağlanan uygulama oluşturulurken burada inşa günlüğü olduğunu. Ancak (mümkünse) libgcc_s_dw2 1.dll'u exe'nize ekleyin ve her ikisini de dağıtın. Dll'yi MinGW/bin klasöründen alabilirsiniz.

Ayrıca, derleyiciye -static-libgcc eklemediniz, ancak linker -flags!

0
genellikle iş görmekte olan bir hacky geçici çözüm bağlayıcı bayrakları bu eklemektir

:

-Wl,-allow-multiple-definition