2011-02-10 28 views
20

eksik bir dışa aktarma işlevi nedeniyle çözümlenemeyen bir içe aktarma içeriyor DependencyWalker dan C++ dll'ye işaret ettiğimde, hata iletisini görüyorum "En az bir modül eksik nedeniyle çözülmemiş bir içe aktarma içeriyor bir örtük bağımlı modülünde ihracat fonksiyonu"En az bir modül, bir bağımlı modül

hata ne olduğunu düşündürmektedir misiniz?

cevap

12

Sizin dll (veya aldığınız bir dll) başka bir dll (bad.dll demek) bir ithalatı var. DependencyWalker bad.dll tarar zaman gerekli işlevi vermez bulur. Bu eksik ihracat, dll'nizin içe aktarma listesinde kırmızı (veya somesuch) olarak etiketlenecektir.

  • Görünümundecorate C++ Fonksiyonlar sizin için yararlı olabilir.
+0

Bazı harici aygıtlara bağlı bir EXE çalıştırmayı denediğimde bu sorunu yaşıyorum. Bu, her zaman bir yürütülebilir dosyanın çalışmasını engelleyen bir sorun mu yoksa bu ihraç edilmeyen işlevler için bir çağrı yapıldığında bir hataya neden/sebep olabilecek bir şey mi? – Carrotman42

+2

Neredeyse her zaman, evet. Tüm ithalatlar, yükleme zamanında çözülür. Bazı ithalatların "gecikme yükü" olarak işaretlenebileceğini unutmayın (bunlar, bir saat camı simgesiyle (veya somesuch) işaretlenmiş DependencyWalker'da gösterilir). Bu ithalatlar, uygulama aslında onları çağırıncaya kadar Windows 'yükleyicisi tarafından çözülmez. Kullanıcının hangi API'yi kullanacağını seçtikten sonra OpenGL/DirectX DLL'lerini yükleyen bir uygulamayı göndermek için bunu kullandım. – bobbogo

+0

Bu cevap, hiçbir zaman resmi olarak cevap olarak işaretlenmemiş ve useufl olmak için yeterli ayrıntı sağlamıyor. Undecorate C++ İşlevleri neden yararlı olur? Ne yapması gerektiğini söylemedin. – shawn1874