2011-11-07 13 views
5

math.h dosyasında tanımlanan sabitlerin nasıl bağlantılı olduğu hakkında bir sorum var._HUGE ve __IMP__HUGE "math.h" içinde

Visual Studio 2010'da "HUGE_VAL" kullanan bir üçüncü taraf kitaplığı kullanan "MD" ile 64-bit bir dll C++ kütüphanesi yapıyorum. "Math.h" başlığından "HUGE_VAL" "_HUGE" olarak tanımlanmış gibi görünüyor. Ben oluşturmaya çalıştığınızda, bir bağlama hata

hata LNK2001 sonuçları: Bazı googling yaptıktan sonra çözülmemiş dış simge _HUGE

, ben _HUGE Msvcrt.lib içinde tanımlanmalıdır düşünüyorum. MSVCRT.lib bağlandı, ancak libcmt.lib ile bağlantı kuramadım çünkü yeniden tanımlama hataları oluşuyordu. tek yaz grevler Ne

Ben HUGE_VAL kullanır ve bağlayıcı seçeneği olarak ayrıntılı/kullanmak basit bir konsol programı oluştururken, bu _ IMP _HUGE bağlanmakta olan göstermesidir.

Gerçekten merak ettiğim şey şu aşamada _HUGE _ IMP _HUGE? Ayrıca, çözümlenmemiş _HUGE hatasını başka kimseye aldınız mı ve herkesin nasıl düzeltilebileceği konusunda bir fikri var mı?

Uzun soruları ve düşüncelerinizi okuduğunuz için teşekkür ederiz.

+0

Visual Studio'yla ilgili hiçbir şey bilmiyorum (yalnızca Linux'ta GCC kullanıyorum) ancak HUGE_VAL standarttır. Belki de derleyicinizden kesinlikle yeni bir standart takip etmesini istemeniz gerekiyor? –

+2

/MT ile derlenmiş .obj/.lib dosyalarını karıştırıyorsunuz. Bağlanamazsınız, tüm bağlı kodların aynı ayarı kullanması gerekir. –

cevap

2

Bu sorunu VC11.0 ile yaşadım. Aldığım tek hata, çözümlenmemiş bir _HUGE hatasıdır.

Dinamik çok iş parçacıklı çalışma zamanı kitaplıklarıyla bağlantı kurarım ve bağlantı adımda "libcmt.lib" ifadesini dahil edersem, sorunun çözüldüğünü (veya çalıştığını) öğrendim.

Başlıkların SDK'da ipuçları için nasıl tanımlandığına bakmaya başladım ve derleme adımlarında bir derleyici ön dizininin eksik olduğunu fark ettim: _DLL.

Dinamik çalışma zamanı kitaplıkları ile oluşturduğunuzda, _HUGE değişkeninin bulunabilmesi için __declspec (dllimport) olması gerekir. Önceden bir yönerge olarak _DLL koymadan "math.h" -> "crtdefs.h" yi eklediğinizde, değişken __declspec (dllimport) olmaz ve bağlantı zamanında eksik olarak görünecektir.

Bu sorunu alıyorum çünkü kendi özel makamilerimle derledim ve _DLL ön yönergesini eklemeyi ihmal ettim. Derleme adımıma -D_DLL eklenmesi, gerekli başka değişiklik olmadan derleme sorununu çözdü.

Bu iş parçacığının eski olduğunu biliyorum, ancak benzer bir sorunu olan birine yardımcı olabileceğinden onu dışarı atabileceğimi düşündüm.

İlgili konular