您的位置:首页 > 编程语言 > C#

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

2013-06-19 14:35 531 查看
用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编译的测试程序就遇到到上述异常?不得其解。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐