为了在C#ASP.NET网站中使用本机C ++ dll,我基于大量研究完成了以下工作:
(1)创建了包含构造函数的C ++本机dll:CMatrix.dll
CMatrix();
CMatrix(unsigned int m, unsigned int n);
(2)创建了一个C ++ / CLI Wrapper Dll:ManagedCmatrix.dll。例如,这包含以下类:
public ref class ManagedCmatrix
{
public:
ManagedCmatrix();
ManagedCMatrix(const unsigned int m, const unsigned int n);
~ManagedcMatrix();
...
private:
CMatrix * m_mat;
};
The first constructor is for example:
ManagedCMatrix:ManagedCMatrix()
{
m_mat = new CMatrix();
}
again I have tested this dll by referencing it from a C# project - it seems to work
(3)我添加了ManagedCMatrix作为对C#ASP.NET网站的引用,确保它和CMatrix.dll位于网站的Bin目录中。我确保PATH环境变量包含bin目录。 当我使用托管包装类时:
ManagedCmatrix A = new ManagedCMatrix(m,n)
抛出异常。
此异常只会在我的网站上出现'网络服务器。它不会出现在Visual Studio 2010开发Web服务器上 - 其中一切都按预期工作。
发生了什么事?