C#程序和其使用的dll必须是同一版本的VS编译的
2013-06-19 14:35
531 查看
用VS2008编写了一个用C语言写的XORDll.dll非托管连接库文件,而使用这个XORDll.dll的C#程序是用VS2010编译的,经过导入:
测试出现如下异常:
我就纳闷了,在学校机房测试成功了,怎么用自己的机子测试就出错呢!仔细分析后回想起我在机房用的C#测试程序和XORDll.dll都是用Vs008编译的。因此,猜测可能是编译器的版本不同造成的。重新将XORDll.dll用VS2010编译后,再次测试成功了。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------
疑点:VS2005编译的XORDll.dll用VS2008编写的测试程序测试成功,为什么VS2008编译的XORDll.dll用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编译的测试程序就遇到到上述异常?不得其解。
相关文章推荐
- FindProcDLL::FindProc 和 KillProcDLL::KillProc,必须使用WPF x86编译出来的程序
- vs2015中 c#如何 编译成低版本供xp使用
- C#使用_如何在没有装VS(Visual Studio)的机器上编译运行C#程序
- c#动态编译,自己做了个c#脚本管理框架,可以作为其他应用的插件使用。增强程序的拓展性
- 使用Costura.Fody把C#程序(含多个Dll)合并成一个Exe
- 使用VS自带的混淆器(dotfuscator)防止你的程序被反编译
- VS保存和编译问题] 总是出现另一个程序正在使用此文件,进程无法访问
- 使用VS自带的混淆器防止你的程序被反编译
- [C#]使用dnSpy对目标程序(EXE或DLL)进行反编译修改并编译运行
- 规避QT4.8.5版本下ocx(dll的情况下)使用QNetworkAccessManager导致程序退出时产生的崩溃问题
- Eclipse + JLink 编译和调试TQ2440裸机程序【我使用的是win64版本的eclipse】
- Opencv3.2+VS2015环境配置(VS2015以下版本需要自己编译dll)
- 出现"若要针对 .NET Framework 4.0 或更高版本进行编译,则提供程序选项中“compilerVersion”特性的值必须为“v4.0”或更高版本。……"错误
- 使用 VS + SOS.dll 调试托管程序
- 命令行编译程序 MSVC vs. MinGW 之 (lib,dll,def,obj,exe) vs (a,dll,def,o,exe)
- Matlab2014a使用VS2015混合编译-低版本matlab支持高版本的vs的方法
- VS 编译Debug/Release时添加引用Debug|Release版本的dll
- 使用Qt5.7.0 VS2015版本生成兼容XP的可执行程序
- cef3 2704版本 使用VS编译