c++非托管包装器不能在web项目/iis中工作

C++ unmanaged wrapper not working in web project/iis

本文关键字:项目 web iis 工作 不能 包装 c++      更新时间:2023-10-16

我收到了一个c++非托管代码的包装器类,我需要将其添加到我的web项目中并通过c#调用。

1)在c#桌面应用程序项目

当我添加引用时,我只能添加包装器dll。无法添加非托管dll。我认为这不是问题。然后当我构建和运行它给出一个错误说

无法加载文件或程序集'AskCmnWrapper.DLL'或其依赖项之一。无法找到指定的模块。

所以我手动复制我的非托管dll到bin文件夹。

2)在c# web应用程序

我得到了同样的问题。当我试图用iis express(通过vs2012)运行它时,手动复制我的非托管DLL到bin文件夹。但这行不通。在web应用程序中运行非托管dll/包装器时是否有任何特殊配置?

请引导我。谢谢你!

您可能会丢失一些必需的c++可重分发文件或其他依赖项。在本机DLL上运行dependency Walker,查看丢失了哪些DLL。

理想情况下,你想做一个c++/CLI项目,其中包含你正在包装的本机库的源代码,并在其上编写一个托管的c++/CLI包装器,在同一个项目中。这样,文件夹中只需要"包装器"(包含本机代码)。

如果你没有源代码,并且你不能静态地将库链接到你的c++/CLI项目中,你需要在运行时将包装器DLL和本机DLL都放在目录中,因为那是它们将被链接的时候。