2012-09-18 9 views
11

VS kurulum birlikte olacak bir programı yüklemek için yapıldı [DllImport aracılığıyla C++ DLL ithal()]bir girişim yanlış biçim istisna Ayrıca dahili olarak bazı işlevleri çağıran bir C# Windows Başvurusu No. tasarladık

Benim C++ kod, Win32 platformunda .DLL olarak oluşturulurken, C#, "Any CPU" platformu olarak oluşturuldu. Test etmek için makinede .exe (C#) çalıştırıldığında

, bir girişim 0x8007000B

HRESULT yanlış bir biçimde dışında bir program yükleme yapıldı

gibi bir hata yüz

Ancak, makinemde VSS 2010'u yükler ve EXE'i çalıştırırsam bu hatayla karşılaşılmaz.

1) Bu hatanın nedeni nedir? 2) VSS kurulduğunda hata neden gözlenmiyor?

ben kullandım

Win7 İşletim Sistemi (64bit) AnyCPU içinde sırayla Win32

inşa (DllImport kullanarak C# ithal C++ Dll), DLL bağlıdır platformu .exe (C#) inşa etmek
+0

Bunun bir bitness uyuşmazlığı hatası olduğunu tahmin ediyorum - .dll dosyanız 32 bit ve .exe dosyanız 64 bit veya başka bir yolla. VS, bir sürü şey yükler, ancak sorunun ne şekilde çözüleceğine dair hiçbir fikrim yok. – dandan78

+0

Herkes yardımcı olabilir mi? –

+0

Lütfen sorunuzu OS, .dll bitness ve .exe bitness’lerini içerecek şekilde güncelleyin. Ayrıca, yapı ayarlarınızı kontrol edin ve .Net parçasını .dll dosyanızın bit eşleşmesiyle eşleşmeye zorlayın. – dandan78

cevap

10

Neredeyse her zaman, 32bit kodu 64bit dll/exe, vb. Veya 32bit dll'den 64bit dll olarak çağırıyorsunuz. X86 için C# kurarsanız ne olur? Hala 64bit üzerinde çalışacak.

+0

Hala merak ediyorum çünkü test makinesi 32bit ve platformda Win32 seçtiğimde C++ dll 64bit olarak nasıl üretilir. X86 (Herhangi Bir CPU yerine) kullandığımda, bu sorun çözüldü . Buradaki sorun nedir? –

+0

Herhangi bir CPU, uygulamanın başlatılmasında 64 veya 32 bit olarak çalışıp çalışmayacağını çerçevenin belirleyeceği anlamına gelir. Test makinesinin 64 olmasını bekledim ve bu nedenle çalışma zamanında 32bit C++ dll'i arayacaktım. –

+0

Dll, Win32 olarak oluşturulmuştur ve EXE, VS'nin kurulu olduğu bir x86bit makinesinde Herhangi bir CPU platformu (VSS'de) olarak oluşturulur. Şimdi, Test makinesi, bu uygulamanın çalıştırıldığı işletim sisteminin x86 versiyonuna sahiptir. Her şey x86 olduğu için 64bit içeri giriyor. –

İlgili konular