当前位置:编程学习 > C#/ASP.NET >>

在VC++2005中有关MFC DLL的一个问题

我在用VC++2005用向导创建了一个MFC DLL,为什么我在Debug下生成的DLL可以被成功的调用函数里的托管函数,而在Release下就不能成功的调用函数里的托管函数。如:
A.cpp
void Test1()
{
    MessageBox("OK!");
    Test2();  //这是一个托管函数
     MessageBox("Yes");
}
现在我用另一个程序b.exe去调用Test1();
调用在Debug下生成的DLL的结果:
OK!
。。。
Yes


调用在Release下生成的DLL的结果却是:
OK!

然后就异常退出了。
这是为什么,谁能帮帮我???
如何解决这个问题???(如果就用Debug下的DLL就不能进行远程调用了,所以只能用Release下的DLL。所有相关DLL都写入程序集了的。) --------------------编程问答-------------------- 什么异常?
--------------------编程问答-------------------- 根据你提供的资料,以我遇到的类似的问题而言,有两个可能的尝试手段(试试而已):
1:打开工程属性-》GeneralSet->Character Set->选择No Set或者 Multi-bytes Character Set,不要选择Unicode
2:打开工程属性-》C/C++-》Optimization(优化)-》Optimization->选择更低的优化级别。你也可以直接调到disabled看是否这里的原因。


--------------------编程问答-------------------- 感谢phy兄弟的回复,不过,我按你的方法把“打开工程属性-》C/C++-》Optimization(优化)-》Optimization-> 选择更低的优化级别”,结果还是不行,而Multi-bytes   Character   Set,不要选择Unicode 我一直都没有用Unicode,所以也不会是这儿的问题。不知道是不是VC2005对CLR的BUG。


现在还是那个问题,只要调用Release下的DLL(这个DLL里还另调用了托管DLL)就会异常结束进程。 --------------------编程问答-------------------- code?

--------------------编程问答-------------------- hdt兄弟,代码方式如下:
我在用VC++2005用向导创建了一个MFC   DLL,为什么我在Debug下生成的DLL可以被成功的调用函数里的托管函数,而在Release下就不能成功的调用函数里的托管函数。如下: 
A.cpp 
void   Test1() 

        MessageBox("OK!"); 
        Test2();     //这是一个托管函数 
          MessageBox("Yes"); 

现在我用另一个程序b.exe去调用Test1(); 
调用在Debug下生成的DLL的结果: 
OK! 
。。。 
Yes 


调用在Release下生成的DLL的结果却是: 
OK! 

然后就异常退出了。 
这个问题搞了我几天了。还是没有解决。希望你能帮帮忙。谢了先。
--------------------编程问答-------------------- MFC里面写托管函数?
Test2()的代码? --------------------编程问答-------------------- B.CPP
Test2(System::String ^s)
{
    MessageBox(s);
}
A.cpp   
void       Test1()   
{   
                MessageBox("OK!");   
                Test2("nn");           //这是一个托管函数   
                    MessageBox("Yes");   
}   
现在我用另一个程序b.exe去调用Test1();   
调用在Debug下生成的DLL的结果:   
OK!   
nn 
Yes  



Test2()是一个托管DLL函数。
补充:.NET技术 ,  VC.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,