用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编译的测试程序就遇到到上述异常?不得其解。