从.NET 2.0迁移到.NET 1.1 - DllImport不再有效

时间:2011-02-17 10:07:30

标签: c# interop .net-2.0 pinvoke .net-1.1

我们的一个应用程序是在C#/ .NET 1.1 / VS2003中,需要保持原样: - (

我需要使用.NET 2.0中另一个C#程序集的代码:由于技术限制(强制使用.NET 1.1,因此无法直接使用.NET 2.0),我将代码从.NET 2.0项目转移到尝试使其适应.NET 1.1(不容易,因为没有泛型,部分禁止等)。

我的1.1代码现在已编译,但由于P / Invoke到非托管DLL而导致 EntryPointNotFoundException ,因此在执行时失败。

奇怪的是,我尝试在.NET 2.0中首先验证我的更改,并且导入DLL时没有任何问题:

[DllImport(FreeImageLibrary, EntryPoint = "FreeImage_GetFileTypeFromHandle")]
public static extern FREE_IMAGE_FORMAT GetFileTypeFromHandle(ref FreeImageIO io, fi_handle handle, int size);

两个项目中的声明是相同的,当然DLL也是一样的。 dumpbin.exe 提供签名:

_FreeImage_GetFileTypeFromHandle@12

我还尝试使用此名称声明入口点,但这也不起作用,并且拼命想要更改CallingConventionCharSetExactSpelling ...方式!

这可能是:

  • 来自{1.1}在.NET 1.1和2.0之间的工作方式的变化,但我没有找到任何这样的方式

  • 从我的代码迁移到.NET 2.0到1.1的错误,但是我没有看到这一点的确切情况(我甚至跟踪代码来查看参数的大小) ,DllImportio,两种情况都相同)

  • ......我想不到的东西!

非常感谢您的专业知识!

1 个答案:

答案 0 :(得分:1)

哦 - 我刚刚意识到我有一个DLL名称冲突引发了这个问题(.NET项目和同名的非托管DLL)......哎哟!对不起,我的问题完全没有意义。无论如何,感谢您阅读!