C#web应用程序无法看到第二级C dll

C#web应用程序无法看到第二级C dll,c#,.net,dll,C#,.net,Dll,我在从C#windows/web应用程序调用C DLL时遇到了一个奇怪的问题 场景是: 我们有一个使用C#dll(csharp1.dll)的C#web应用程序。 此csharp1.dll返回调用C dll(c1.dll)中的一些函数。 而c1.dll则为一些较低级别的函数调用另一个C dll(c2.dll) 详细信息: 在csharp1.dll的实现中,有以下pinvoke行: [DllImport("c1.dll", CallingConvention = CallingConvention.

我在从C#windows/web应用程序调用C DLL时遇到了一个奇怪的问题

场景是: 我们有一个使用C#dll(csharp1.dll)的C#web应用程序。 此csharp1.dll返回调用C dll(c1.dll)中的一些函数。 而c1.dll则为一些较低级别的函数调用另一个C dll(c2.dll)

详细信息: 在csharp1.dll的实现中,有以下pinvoke行:

[DllImport("c1.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Ansi)]
static extern unsafe internal void *openhw(int id);
但是,没有对c2.dll的直接引用,c2.dll由c1.dll中的
LoadLibrary(“c2.dll”)
加载

问题: 将csharp1.dll添加到C#windows控制台应用程序时,它工作正常,可以使用c1.dll和c2.dll的所有函数。 将csharp2.dll添加到C#web应用程序时,会加载c1.dll,但无法加载c2.dll

只有在从web服务器IIS运行的C#web应用程序中使用时,才会出现此问题。因此,我甚至尝试将c2.dll放入windows目录,认为调用进程(IIS)看不到c2.dll,运气不好。而且我看不出
LoadLibrary(“c2.dll”)
调用有任何问题

什么可能导致这样的问题?在不改变c1.dll和c2.dll的实现的情况下,我如何解决这个问题


更新:我尝试过调整信任级别和禁用卷影复制,但都没有效果。

c dll在哪里?应用程序的信任级别是什么?C DLL位于windows文件夹中,以确保任何应用程序都可以加载它。关于信任级别,注意事项是为项目专门更改的,因此它必须处于默认级别。如果您发布了任何错误代码/消息,这会有所帮助。应用程序本身不会给出任何错误,因为它是在c1.dll中处理的,其中LoadLibrary(“c2.dll”)返回null。这就是问题所在。@Alparslan,在
LoadLibrary(“c2.dll”)
返回空值后立即调用,您将了解发生这种情况的原因。