Assembly.LoadFrom是否只能加载托管代码生成的dll?

lazyloon 2008-12-04 02:44:24
我用Assembly.LoadFrom加载一个vb写的非托管的dll文件,结果产生了BadImageFormatException异常。
msdn上对该异常的解释是: 当DLL 或可执行程序的文件图像无效时引发的异常。
下面的备注:是当可执行程序的文件图像无效时,引发此异常。例如,当非托管代码传递给 Load 进行加载时,会引发此异常
因此我分析是Assembly.LoadFrom无法加载非托管的程序集引起的
但msdn上对Assembly.LoadFrom方法的解释是:已知程序集的文件名或路径,加载程序集。
并没有指出是托管的程序集还是非托管的程序集

我在网上搜不到这方面的资料,所以无法确认

还有Assembly.LoadFrom,Assembly.LoadFile,Assembly.Load都无法加载非托管的程序集么?它们的区别是什么?

如果要加载非托管的程序集,只能使用DllImport调用么?
如何才能调用非托管代码生成的DLL文件中的类?

...全文
140 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lazyloon 2008-12-05
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 gomoku 的回复:]
dumpbin.exe /EXPORTS 非托管.dll
dumpbin,VS工具之一,可以查看输出节。你也可以下载其他诸如DllExplorer之类工具。
[/Quote]

这个输出的东西我看不懂啊,不知道怎么用来调用非托管dll中的类
lazyloon 2008-12-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wangping_li 的回复:]
1、Assembly.Load(AssemblyName):
在给定程序集的AssemblyName的情况下,加载程序集.由.NET Compact Framework支持
2、Assembly.LoadFile(String):
加载指定路径上的程序集文件的内容
3、Assembly.LoadFrom(String):
已知程序集的文件名或路径,加载程序集.由.NET Compact Framework支持
[/Quote]

其实,我最想知道的是它们能不能加载非托管的dll文件
gomoku 2008-12-04
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 lazyloon 的回复:]
就目前所知DllImport仅能加载非托管代码生成的dll中的函数(方法),我找不到加载其中类的资料,那位高手可以给我解惑呢?
[/Quote]

dumpbin.exe /EXPORTS 非托管.dll
dumpbin,VS工具之一,可以查看输出节。你也可以下载其他诸如DllExplorer之类工具。
wuyq11 2008-12-04
  • 打赏
  • 举报
回复
参考
http://www.cnblogs.com/xlwei/archive/2008/04/17/1158746.html
wangping_li 2008-12-04
  • 打赏
  • 举报
回复
1、Assembly.Load(AssemblyName):
在给定程序集的AssemblyName的情况下,加载程序集.由.NET Compact Framework支持
2、Assembly.LoadFile(String):
加载指定路径上的程序集文件的内容
3、Assembly.LoadFrom(String):
已知程序集的文件名或路径,加载程序集.由.NET Compact Framework支持

lazyloon 2008-12-04
  • 打赏
  • 举报
回复
就目前所知DllImport仅能加载非托管代码生成的dll中的函数(方法),我找不到加载其中类的资料,那位高手可以给我解惑呢?
wangping_li 2008-12-04
  • 打赏
  • 举报
回复
一般非托管的都是DllImport调用

111,131

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧