提问人:Mark 提问时间:8/21/2010 更新时间:8/21/2010 访问量:402
从 VB.NET 调用非托管代码时,使用 DECLARE LIB 或 DllImportAttribute 是否更可靠?
When calling unmanaged code from VB.NET, is it more reliable to use DECLARE LIB or DllImportAttribute?
问:
我们有一个 VB.NET 程序,它需要定期调用外部非托管 DLL 中的函数,以便与我们的旧应用程序进行通信。我们遇到了应用程序(似乎)随机无法找到带有非托管代码的 DLL 的问题。目前,我们使用 DECLARE FUNCTION blah LIB 作为非托管代码。改用 DllImportAttribute 会更好/更可靠吗?还是我错过了别的东西?
答:
4赞
Hans Passant
8/21/2010
#1
这没有任何区别,它是完全相同的 P/Invoke 编组器来完成工作。Declare 语句假定不同的默认值,如 CharSet,因此如果您打算交换它们,请注意。
随机 DLL 搜索问题的最典型原因是更改了 Environment.CurrentDirectory。就像使用 OpenFileDialog 时一样。将 DLL(及其依赖项)与 EXE 保存在同一个目录中,以避免这种情况。
评论