shijimin1005 发表于 2012-7-23 17:41:49

au3程序调用DLL能调用C#生成的DLL文件吗?

本帖最后由 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的

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

魔导 发表于 2012-7-24 16:12:21

目录应该是这个吧:C:\WINDOWS\system32\

shijimin1005 发表于 2012-7-24 17:54:04

回复 2# 魔导


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

   c:\windows\system32 只是他的默认路径把??这只是我个人想法...望大神帮助

happytc 发表于 2012-7-24 18:05:41

回复 1# shijimin1005


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

C#生成的DLL肯定没有问题。

shijimin1005 发表于 2012-7-25 10:20:41

回复 4# happytc


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

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

    这只是其中一些,所以我不清楚直接调用真的调用的到吗??求解...

happytc 发表于 2012-7-25 11:40:27

本帖最后由 happytc 于 2012-7-25 11:46 编辑

回复 5# shijimin1005


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

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

当然,若是支持.net framework的语言,支持就可以调用没有任何问题。
页: [1]
查看完整版本: au3程序调用DLL能调用C#生成的DLL文件吗?