DLL文件用什么c#可以打开吗?
DLL文件用什么软件可以打开 问题点数:10、回复次数:17Top
1 楼19820826lxy(李宇)回复于 2005-07-20 15:40:11 得分 0
upTop
2 楼wingnal(清淡天和)回复于 2005-07-20 15:55:18 得分 0
反编译软件Top
3 楼ivorstar(单击此处留言)回复于 2005-07-20 15:58:38 得分 0
其实用记事本就能打开,但是看不懂,呵呵,玩笑。
在VS.NET里添加对dll一个引用后,运气好的话,在对象浏览器里能看到可供调用的函数,但是源码什么的是不要想了。(不是所有的Dll文件都能看到的)
记得以前也有问这个的,可以参考Top
4 楼rainlake(rainlake)回复于 2005-07-20 16:15:50 得分 0
Reflector.exeTop
5 楼lm517(男一号)回复于 2005-07-20 16:42:29 得分 0
不知道,帮顶Top
6 楼stringbuilder(~~~叶赫拉那.易卜拉欣.海豚~~~)回复于 2005-07-20 16:56:54 得分 0
只有。NET做的DLL是可以用C#打开的,如果是VC写的就没有希望了!只有反编译!Top
7 楼lovvver(ElephantTalk.Bright)回复于 2005-07-20 16:57:01 得分 0
一般编辑软件看不了的。
最好用Reflector,反编译后再看,比较好。Top
8 楼lovvver(ElephantTalk.Bright)回复于 2005-07-20 16:57:51 得分 0
只有。NET做的DLL是可以用C#打开的?
可以吗,我怎么打不开啊?Top
9 楼okyzx(Jason)回复于 2005-07-20 19:52:53 得分 0
用ildasm,可以看Top
10 楼chenzhanyiczy(hi)回复于 2005-07-20 20:34:20 得分 0
Reflector,你想看IL,用ildasmTop
11 楼19820826lxy(李宇)回复于 2005-07-29 09:05:39 得分 0
UPTop
12 楼readersm68(地主)回复于 2005-07-29 09:24:29 得分 0
Reflector.exeTop
13 楼gezp(玛尔帝尼)回复于 2005-07-29 09:34:12 得分 10
反编译软件Top
14 楼deardoris(so cute,so sweet)回复于 2005-07-29 09:35:31 得分 0
反编译后才能打开Top
15 楼lgr0727(特立独行的猪)回复于 2005-07-29 09:39:00 得分 0
Reflector.exe
Top
16 楼woyaoying(凉爽的风)回复于 2005-07-29 09:59:04 得分 0
RomoteSoft公司的DeCompiler也挺不错的,当然你的Dll文件必须是托管的。Top
17 楼kaixin110(kydk.com)回复于 2005-07-29 10:02:38 得分 0
我们可以COM Interop或者Pinvoke来使用这个DLL。如果这个DLL是个COM组件,那么我们可以通过VS.net的reference导入这个COM 组件。VS.Net内部的interop importer会自动帮我们生成一个interop assembly。这样我们就可以在C#中直接使用了。
如果这个组件是个普通的DLL,我们可以把它copy到编译出来的exe文件所在目录,或者windows目录下,然后使用PInvoke技术即可调用它提供的API。
以下的MSDN文章为您介绍了这些应用:
An Overview of Managed/Unmanaged Code Interoperability
http://msdn.microsoft.com/library/en-us/dndotnet/html/manunmancode.asp
P/Invoke Revisited
http://msdn.microsoft.com/msdnmag/issues/04/10/NET/
您看了我推荐给您的文章就会了。我们只要直接引用这个DLL提供的方法就可以了。不用看源代码的。比如我们要调用Win32API MessageBox
[DllImport("user32.dll", CharSet=CharSet.Auto)]
public static extern int MessageBox(IntPtr hWnd, String text, String caption, uint type);
您好,
“人家只给一个dll,不给源码”
您说的没有错,我们只要调用DLL提供的接口就可以了。不用源代码的。
.Net可以直接调用DLL的接口,不光是系统提供的Win32 API,我们自己的DLL也可以使用。比如,我有一个DLL(MYDll.dll),提供了一个Export 的function
int func(void)
只要把这个DLL和您的exe文件放在同一个目录下面,然后在代码中声明为:
[DllImport("MyDLL.dll")]
extern static int func();
即可使用。
.Net framework会自动找到这个DLL的,然后调用它导出的方法。
如果您不知道这个DLL导出了多少方法,您可以使用Platform SDK中提供的Depends工具来查看这个DLL。Platform SDK的下载地址为:
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
Depends.exe位于安装目录的\bin子目录下:
C:\Program Files\Microsoft Platform SDK\Bin\depends.exe
该工具导出的function名字位于右边中间的列表框。
另外,有两种情况,我们对于这个DLL不能用这种方法:
1. 如果您的DLL没有导出function的名字,只导出了function的编号
2. 如果这个DLL是个COM组件
Top




