Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.Net C#DllImport问题_C#_Asp.net_Dll_Dllimport - Fatal编程技术网

Asp.Net C#DllImport问题

Asp.Net C#DllImport问题,c#,asp.net,dll,dllimport,C#,Asp.net,Dll,Dllimport,我想在我的网站项目中导入DLL文件。我在文件夹C:\DLLDir中有dll文件“my.dll”,我正在使用代码: [DllImport("C:\\DLLDir\\my.dll", EntryPoint = "Out32")] [DllImport("my.dll", EntryPoint = "Out32")] 这样行。但我想使用相对路径(网站根路径)。我正在尝试将“my.dll”放入“bin”或根文件夹,我正在使用以下代码: [DllImport("C:\\DLLDir\\my.dl

我想在我的网站项目中导入DLL文件。我在文件夹C:\DLLDir中有dll文件“my.dll”,我正在使用代码:

[DllImport("C:\\DLLDir\\my.dll", EntryPoint = "Out32")]
   [DllImport("my.dll", EntryPoint = "Out32")]
这样行。但我想使用相对路径(网站根路径)。我正在尝试将“my.dll”放入“bin”或根文件夹,我正在使用以下代码:

[DllImport("C:\\DLLDir\\my.dll", EntryPoint = "Out32")]
   [DllImport("my.dll", EntryPoint = "Out32")]
但我收到错误:无法加载DLL“my.DLL”:找不到指定的模块。(来自HRESULT的异常:0x8007007E)


有什么想法吗?

或者您没有将my.dll复制到应该加载它的Bin文件夹。 使用processexplorer()将显示它试图从何处加载此文件

编辑:感谢volpav提醒它是非托管DLL-忽略托管部分。。。 …程序集具有一些其他依赖项。
查看此类故障的详细调查(搜索“程序集加载故障日志”以获取更多链接)。

我认为DLL必须位于您的路径上(如果不是绝对路径)。您可能会感到惊讶的是,除非您在path变量中特别添加“.”,否则CWD不会出现在您的路径上。

我想您可能需要先检查以下SO问题(因为它与您的案例相关):

正如其他人所建议的,检查
PATH
环境变量以确保
C:\DLLDir\
存在。您可以阅读有关如何配置环境变量的更多信息

也可以查看这一点(似乎存在依赖项问题)


如果您要导入的是COM DLL,那么它可能还需要首先在目标计算机上注册(尽管我不确定是否需要注册)

转到
Properties/Build
选项卡,将平台目标设置为
x86

我想它需要dll的绝对路径。Server.MapPath应该为youServer.MapPath提供与web目录位置相关的路径。因此,如果您已经拥有绝对路径,则不会有任何区别。但是Server.MapPath将允许OP使用DLL的相对路径,但将绝对路径传递给DLLImport。您可以将DLL放入system32或修复路径变量my.DLL是否有任何依赖项?如果是这样,您是否也将这些依赖项复制到了网站bin目录中?我相信这与Fusion无关,因为它是非托管DLL。