C# exe içinde aramak istediğim bir yönetilmeyen C++ DLL var. Olası çözümlere baktım ve bana yapılacak en iyi şey, C++/CLI'yi yönetilmeyen C++ sınıfı için bir sarıcı olarak kullanmak gibi görünüyor. Bu şekilde görünen bir C++/CLI sınıfı yazdım ve bir DLL'ye derlendim (bunun bir yok edici ve bir finalleştirici olması gerektiğini biliyorum, ancak kod ana işlev içine girmeyecek, basitlik iyiliği):EEFileLoadException Yönetilen DLL'de C++ DLL Yüklenirken
#include <cppheader.h>
using namespace System;
namespace DependencyInterface
{
public ref class DependencyTester
{
public:
DependencyTester()
{
_class = new CPPClass();
}
private:
CPPClass* _class;
};
}
sonra şöyle bir C# yürütülebilir vardır:
First-chance exception at 0x000007fefd5a9e5d in DependencyTest2.exe: Microsoft C++ exception: EEFileLoadException * __ptr64 at memory location 0x0094ca58..
: Ben çalıştığınızda,
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DependencyInterface;
namespace DependencyTest2
{
class Program
{
static void Main(string[] args)
{
DependencyTester tester;
}
}
}
Maalesef ve kod çalıştırmasına, aşağıdaki C++ istisna olsun
Belirlemeye çalıştım Ana'nın ilk satırında bir kesme noktası, ancak yürütme bu noktaya ulaşmadan önce istisna atılır.
First-chance exception at 0x76d8c5e2 in DependencyTest2.exe: 0xC0000005: Access violation reading location 0x0000000000000020.
kimse herhangi bir tavsiye var mı: Ben vurursanız ben bu olsun (Ben MVS 2010 kullanıyorum) "devam"? Bu Windows 7 x64 üzerinde ve her şey, C++ DLL dahil olmak üzere x64 için derlenmiştir.
Aramak için yığın izini görmem gerekiyor. Ancak öncelikle yönetilen kipte hata ayıklayıcınızı değiştirin, böylece gerçek yönetilen istisnaları görebilirsiniz. –