我正在尝试从ASP.NET 4.0 Web应用程序中调用一个C++ DLL,但一直出现一个“DLL导入错误 - 无法加载库'Library name'”。
我已经阅读了很多博客,其中开发者遇到相同的问题,而大多数人看起来解决方法是将未托管的DLL所在的路径添加到“PATH”环境变量中。
我已经在服务器上同样做过,并且反复检查了我是否正确拼写了路径,以及C ++ DLL是否位于该文件夹中,但是当我在浏览器中查看应用程序时,仍然会出现相同的错误。我已将日志放置在代码中,它确实来自于调用不受管制的DLL的代码部分。
这是有关我的环境的一些信息:
- Windows Server 2003
- IIS 6.0
- .NET Framework 4.0
- ASP.NET MVC 4.0
- C#
编辑:
就代码而言,它与任何其他相互操作代码完全相同,我有一个包装器类,在其中使用DllImport定义了所有所需的函数调用,并在我的代码中创建了一个包装器的新实例并调用所需的函数。正如我所提到的,只要C ++ DLL位于IISExpress文件夹中,它就可以在开发机器上很好地工作,但是当我部署到服务器时,它会抛出上述错误。[DllImport("My3rdparty.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern int myfunction(int handle, int* response, int timer);