C#程序和其使用的dll必须是同一版本的VS编译的

本文详细分析了在不同版本的Visual Studio编译的DLL与C#程序调用时遇到异常的问题,并通过将DLL重新编译至与测试程序相同版本的Visual Studio来解决该问题。

用VS2008编写了一个用C语言写的XORDll.dll非托管连接库文件,而使用这个XORDll.dll的C#程序是用VS2010编译的,经过导入:

[DllImport("XORDll.dll", 
                    EntryPoint = "OutEncrypt",
                    CharSet = CharSet.Ansi,   //如果使用C写的XORDll.dll,这个字符集使用Auto会导致动态连接失败。
                    CallingConvention=CallingConvention.StdCall)
        ]

        public static extern int OutEncrypt( string FilePath, string  SecretWord );  //第一个参数:加密文件路径,第二个:密码

测试出现如下异常:

        我就纳闷了,在学校机房测试成功了,怎么用自己的机子测试就出错呢!仔细分析后回想起我在机房用的C#测试程序和XORDll.dll都是用Vs008编译的。因此,猜测可能是编译器的版本不同造成的。重新将XORDll.dll用VS2010编译后,再次测试成功了。

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------

疑点:VS2005编译的XORDll.dll用VS2008编写的测试程序测试成功,为什么VS2008编译的XORDll.dll用VS2010编译的测试程序就遇到到上述异常?不得其解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值