在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