问题描述
我在用VC++2005用向导创建了一个MFCDLL,为什么我在Debug下生成的DLL可以被成功的调用函数里的托管函数,而在Release下就不能成功的调用函数里的托管函数。如:A.cppvoidTest1(){MessageBox("OK!");Test2();//这是一个托管函数MessageBox("Yes");}现在我用另一个程序b.exe去调用Test1();调用在Debug下生成的DLL的结果:OK!。。。Yes调用在Release下生成的DLL的结果却是:OK!然后就异常退出了。这是为什么,谁能帮帮我???如何解决这个问题???(如果就用Debug下的DLL就不能进行远程调用了,所以只能用Release下的DLL。所有相关DLL都写入程序集了的。)
解决方案
解决方案二:
什么异常?
解决方案三:
根据你提供的资料,以我遇到的类似的问题而言,有两个可能的尝试手段(试试而已):1:打开工程属性-》GeneralSet->CharacterSet->选择NoSet或者Multi-bytesCharacterSet,不要选择Unicode2:打开工程属性-》C/C++-》Optimization(优化)-》Optimization->选择更低的优化级别。你也可以直接调到disabled看是否这里的原因。
解决方案四:
感谢phy兄弟的回复,不过,我按你的方法把“打开工程属性-》C/C++-》Optimization(优化)-》Optimization->选择更低的优化级别”,结果还是不行,而Multi-bytesCharacterSet,不要选择Unicode我一直都没有用Unicode,所以也不会是这儿的问题。不知道是不是VC2005对CLR的BUG。现在还是那个问题,只要调用Release下的DLL(这个DLL里还另调用了托管DLL)就会异常结束进程。
解决方案五:
code?
解决方案六:
hdt兄弟,代码方式如下:我在用VC++2005用向导创建了一个MFCDLL,为什么我在Debug下生成的DLL可以被成功的调用函数里的托管函数,而在Release下就不能成功的调用函数里的托管函数。如下:A.cppvoidTest1(){MessageBox("OK!");Test2();//这是一个托管函数MessageBox("Yes");}现在我用另一个程序b.exe去调用Test1();调用在Debug下生成的DLL的结果:OK!。。。Yes调用在Release下生成的DLL的结果却是:OK!然后就异常退出了。这个问题搞了我几天了。还是没有解决。希望你能帮帮忙。谢了先。
解决方案七:
MFC里面写托管函数?Test2()的代码?
解决方案八:
B.CPPTest2(System::String^s){MessageBox(s);}A.cppvoidTest1(){MessageBox("OK!");Test2("nn");//这是一个托管函数MessageBox("Yes");}现在我用另一个程序b.exe去调用Test1();调用在Debug下生成的DLL的结果:OK!nnYesTest2()是一个托管DLL函数。