我目前在VB6应用程序上遇到一些麻烦,需要使用.NET framework 4.5中提供的相同编码方法对某些文本进行编码。 我通过互联网搜索并发现了一些尝试使用UTF-8进行编码的功能,但它仍然不能与4.5输出匹配。
然后我找了一种在VB6项目中导入4.5框架DLL的方法。这是我到目前为止所取得的成就:
Private Declare Function dotNetUrlEncode Lib "System.Web.dll" Alias "UrlEncode" (str As String) As String
问题在于方法" UrlEncode"它位于名称空间内" HttpUtility"," System.Web.HttpUtility.UrlEncode"并使用上面的代码我无法访问该方法。我尝试将其更改为下面的代码,但问题仍然存在,我无法达到UrlEncode方法:
Private Declare Function dotNetUrlEncode Lib "System.Web.dll" Alias "HttpUtility.UrlEncode" (str As String) As String
Private Declare Function dotNetUrlEncode Lib "System.Web.HttpUtility.dll" Alias "UrlEncode" (str As String) As String
有没有办法在#34; System.Web.dll"中找到方法UrlEncode?我哪里错了?
感谢您的帮助!
最好的问候。
答案 0 :(得分:1)
这不起作用。 .NET DLL包含托管代码,需要.NET运行时。您的VB6应用程序无法调用该代码。它的进程没有加载.NET运行时。
您只能通过这种方式从 native DLL导入函数。这就是为什么它适用于操作系统附带的系统DLL。
最好的解决方案是查阅文档并准确确定UrlEncode
函数的工作原理。当然,实施的内部结构不会被记录,但这并不重要。你对此感兴趣的只是规范。如果找不到具有等效行为的系统函数,则在实现自己的函数时遵循相同的规范。
如果您绝对需要从VB 6应用程序调用.NET函数,则可以完成。您需要创建一个.NET包装器,它调用框架提供的函数,并使用ComVisibleAttribute
以COM兼容的方式公开。更多信息here,here和here。