使用 VS2010 在 C# 上出现 Wininet.dll 错误
Posted
技术标签:
【中文标题】使用 VS2010 在 C# 上出现 Wininet.dll 错误【英文标题】:Wininet.dll Error on C# using VS2010 【发布时间】:2013-10-18 13:04:35 【问题描述】:我的 C# 代码有问题(我使用的是 VS2010),我尝试使用 wininet.dll 来使用它的 FTP 功能。 DLL 不是 .NET 组件,所以我无法添加作为参考,而是使用我在互联网上看到的这段代码,代码如下:
[System.Runtime.InteropServices.DllImport("wininet.dll", CharSet = System.Runtime.InteropServices.CharSet.Ansi, SetLastError = true)]
extern public static long InternetOpen(
string lpszAgent,
long dwAccessType,
string lpszProxyName,
string lpszProxyBypass,
long dwFlags);
我在保存和构建项目时没有遇到任何错误,但是当我尝试调试时收到错误,部分错误显示“Culture=neutral, PublicKeyToken=null”,因为方法“InternetOpen”没有实现(没有 RVA)。”
我认为错误是因为它看不到实际的wininet.dll文件,我尝试将文件放在项目文件所在的文件夹中,但没有解决问题。希望你们能帮助我。提前致谢!
【问题讨论】:
你从哪里复制代码?他们声称它有效吗?您收到的完整例外情况是什么? 我忘了复制链接,但我在 *** 中也看到了,发布问题的人说他的代码正在运行(他有一个不同的问题,但他说他的代码正在运行) 它永远无法工作,声明完全错误。该错误消息不太可能出现,它表示缺少 extern 关键字。听起来您正试图在根本不支持 pinvoke 的平台上执行此操作。 .NET 已经很好地支持了 FTP,不要自己动手。 Hans,谢谢,我认为这是可能的,但是如果我想在我的 4.0 项目中使用 dll 怎么办?如果 wininet 是非 .NET 组件,有什么办法吗? 【参考方案1】:运行时可能找不到该签名的入口点,因为根据 P/Invoke.net,签名看起来像这样:
[DllImport("wininet.dll", SetLastError=true, CharSet=CharSet.Auto)]
static extern IntPtr InternetOpen(string lpszAgent,
int dwAccessType,
string lpszProxyName,
string lpszProxyBypass,
int dwFlags);
【讨论】:
我尝试根据你的回答改代码,但还是出现错误 这是完整的错误消息:无法从程序集 'FTPDelete,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null' 加载类型 'FTPDelete.Form1',因为方法 'InternetOpen' 没有实施(无 RVA)。注意:FTPDelete 是解决方案名称。以上是关于使用 VS2010 在 C# 上出现 Wininet.dll 错误的主要内容,如果未能解决你的问题,请参考以下文章
halcon在vs2010 C#中 从工具箱拖动HWindowControl控件出现以下错误啥原因,怎么解决
我可以在我的开发机器上为 C# VS2010 项目使用哪种轻量级 SQL Server 类型?