加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 从.NET 2.0迁移到.NET 1.1 – DllImport不再有效

发布时间:2020-12-15 21:15:45 所属栏目:百科 来源:网络整理
导读:我们的一个应用程序是在C#/.NET 1.1 / VS2003中,需要保持原样:-( 我需要使用.NET 2.0中另一个C#程序集的代码:由于技术限制(强制使用.NET 1.1,因此无法直接使用.NET 2.0),我将代码从.NET 2.0项目中移除以尝试适应它到.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

我也试图用这个名字声明入口点,但这也不起作用,以及拼命改变CallingConvention,CharSet,ExactSpelling ……没办法!

这可能是:

>从DllImport在.NET 1.1和2.0之间的工作方式的变化,但我没有找到任何这样的方式
>从我的代码迁移中的错误下降到.NET 2.0到1.1,但是我没有看到这一点的确切情况(我甚至跟踪代码来查看参数的大小,io和句柄,它们在两种情况下是相同的)
> ……我想不到的东西!

非常感谢您的专业知识!

解决方法

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读