找回密码
 加入
搜索
查看: 4516|回复: 5

[AU3基础] au3程序调用DLL能调用C#生成的DLL文件吗?

  [复制链接]
发表于 2012-7-23 17:41:49 | 显示全部楼层 |阅读模式
本帖最后由 shijimin1005 于 2012-7-23 17:43 编辑

是这样,现在牵涉到一个加密机密的过程,原来的程序使用的是C#自带的 Encrypt 方法加密
 /// <summary>
        /// 加密
        /// </summary>
        /// <param name="Text">明文</param>
        /// <returns>密文</returns>
        public static string Encrypt(string Text)
        {
            return Encrypt(Text, "12345");
        }
现在使用AU3也想加密解密 ,但用自己的方法加密解密出来的和他的结果是不一样的
_StringEncrypt(1, $text,$sKey,0)
所以我想到了DLLCALL, 但查了点资料, 不知道是不是这个DLL只能是C语言C++写出来的呢??

以下是我写的调DLL的语句
DllCall("commons.dll", "wstr", "Encrypt",  "wstr", "ABCDE")
commons.dll我放在程序同目录了,运行后 使用 @error 查看错误 返回 3

@error: 1 不能使用这个DLL文件,
2 未知 "返回值",  
3 未在DLL文件中找到这个"函数".
4 参数数量错误.

我试过把commons.dll删掉,他@error返回值是1 ,所以我是不是可以确定他是能够读到这个DLL的

请问各位大神是我写法有问题还是无法调用?

评分

参与人数 1金钱 +10 收起 理由
wq1282 + 10 用regasm注册c#的x86.dll,就能像com一样用 ...

查看全部评分

发表于 2012-7-24 16:12:21 | 显示全部楼层
目录应该是这个吧:C:\WINDOWS\system32\
 楼主| 发表于 2012-7-24 17:54:04 | 显示全部楼层
回复 2# 魔导


    "我试过把commons.dll删掉,他@error返回值是1 ,所以我是不是可以确定他是能够读到这个DLL的"

     c:\windows\system32 只是他的默认路径把??这只是我个人想法...望大神帮助
发表于 2012-7-24 18:05:41 | 显示全部楼层
回复 1# shijimin1005


    那个语言编译成的DLL都一样调用的,只要是生成的真的机器码。

C#生成的DLL肯定没有问题。
 楼主| 发表于 2012-7-25 10:20:41 | 显示全部楼层
回复 4# happytc


    谢谢,是直接VS生成好的DLL就能使用吗??

    以下是我看的一些资料
   
用C#编写的代码经C#编译器后,并非生成本地代码而是生成托管代码。也就是说,程序集在打包时是连同CLR一起打包的。在客户端的机器上,CLR一行行的读取IL,在读取每行IL时,CLR利用JIT编译器将IL编译成本地的CPU指令。


    这只是其中一些,所以我不清楚直接调用真的调用的到吗??求解...
发表于 2012-7-25 11:40:27 | 显示全部楼层
本帖最后由 happytc 于 2012-7-25 11:46 编辑

回复 5# shijimin1005


    我在vc++下调用过C#编成的DLL,采用在VC++环境中修改使其支持托管代码,然后就可以引入托管的动态连接库来用了。

或者在C#里把DLL编译成支持选择开放com+接口,不过用起来比一般的DLL麻烦多了。

当然,若是支持.net framework的语言,支持就可以调用没有任何问题。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-20 11:59 , Processed in 0.089364 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表