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的
请问各位大神是我写法有问题还是无法调用? 目录应该是这个吧:C:\WINDOWS\system32\ 回复 2# 魔导
"我试过把commons.dll删掉,他@error返回值是1 ,所以我是不是可以确定他是能够读到这个DLL的"
c:\windows\system32 只是他的默认路径把??这只是我个人想法...望大神帮助 回复 1# shijimin1005
那个语言编译成的DLL都一样调用的,只要是生成的真的机器码。
C#生成的DLL肯定没有问题。 回复 4# happytc
谢谢,是直接VS生成好的DLL就能使用吗??
以下是我看的一些资料
用C#编写的代码经C#编译器后,并非生成本地代码而是生成托管代码。也就是说,程序集在打包时是连同CLR一起打包的。在客户端的机器上,CLR一行行的读取IL,在读取每行IL时,CLR利用JIT编译器将IL编译成本地的CPU指令。
这只是其中一些,所以我不清楚直接调用真的调用的到吗??求解... 本帖最后由 happytc 于 2012-7-25 11:46 编辑
回复 5# shijimin1005
我在vc++下调用过C#编成的DLL,采用在VC++环境中修改使其支持托管代码,然后就可以引入托管的动态连接库来用了。
或者在C#里把DLL编译成支持选择开放com+接口,不过用起来比一般的DLL麻烦多了。
当然,若是支持.net framework的语言,支持就可以调用没有任何问题。
页:
[1]