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

问题描述

我在用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函数。

时间: 2024-10-04 15:08:21

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

vc++2005中创建MFC应用程序的时候:创建完成之后怎么没有类视图啦,谁知道去哪找能看见类视图吗?

问题描述 如题... 解决方案 解决方案二:还有就是学习vc++2005用什么书比较好呢?我正在看孙鑫的vc++视频,希望大家能给点意见..谢谢..

SQL SERVER 2005中如何获取日期(一个月的最后一日、上个月第一天、最后一天、一年的第一日等等)

原文:[转]SQL SERVER 2005中如何获取日期(一个月的最后一日.上个月第一天.最后一天.一年的第一日等等) 在网上找到的一篇文章,相当不错哦O(∩_∩)O~ //C#本周第一天            int dayOfWeek = Convert.ToInt32(DateTime.Now.DayOfWeek);            DateTime today = System.DateTime.Now.AddDays((-1) * (dayOfWeek==0?7:dayOfWee

VC++ 2005 中编写 Native code 的问题

问题描述 请问用VisualStudio2005是否可以编写非托管的(不依赖于CLR的程序)C++程序?还有就是SideBySide到底是什么东东?另外,如果在VS2005中,有关STL.MFC等VC6.0上的库是否是完完全全的继承过来了? 解决方案 解决方案二:路过帮顶=============11月6日,论坛升级公告,积分已经做了调整!http://topic.csdn.net/u/20081107/11/b27dc75f-14b1-4594-9de3-5b18d9e36a11.html此次

理解VC# 2005中的字符串和正规表达式

不管创建什么类型的应用程序,你都需要使用字符串.无论数据如何存储,终端用户总要与可读的文本打交道.因此,了解如何使用字符串是任何.NET开发者创建丰富的应用程序所需要学习的必要知识.除了向你展示在.NET框架中字符串的使用外,本文还将向你介绍正规表达式的知识. 除了向你展示如何使用.NET框架中的字符串外,本文还将向你介绍正规表达式.正规表达式是格式代码,不仅允许你验证一个特定字符串匹配一个给定的格式,而且你还可以使用正规表达式来从任何其它可能被认为是自由格式的文本中提取有意义的信息,例如从用户

vc.net(托管)中使用mfc方便吗

问题描述 vc.net(托管)中使用mfc方便吗?.net做界面快,mfc底层功能强大,两个都想要,咋办? 解决方案 解决方案二:mfc搞界面快我相信搞底层的话还不如直接用api+stl方便解决方案三:你还是研究一下C++CLI吧,据说是专门为了满足你说的要求而开发的.解决方案四:VC.net是向下兼容的,对MFC的支持也很大呀.你在VC.net中使用MFC一点问题都没有,只是需要看一下字符集和语法定义之间的区别罢了.

Visual C++ 2005中的突破性变化

Microsoft Visual C++ 2005是微软公司Visual Studio 2005开发套件中的一出重头戏,与前一个版本相比,其革新性的集成开发环境与C++编译器,带来了有许多改变.在本文中,主要讲解程序员在升级程序时,可能会遇到的一些不同之处及变化,而这些变化很可能会使老一点的程序不能通过编译.总之,这些变化绝不是偶然发生的,其背后都有强大的理论依据在支撑,所以,使用Visual C++的程序员,在升级之前,一定要弄清楚这些变化. Visual C++中已经发生的变化 微软Visu

VC++.NET中定义和使用MFC DLL(一)

什么是DLL? DLL指的是动态链接库(Dynamic Link Library),它是一个可以被多个应用程序(甚至是不同语言编写的应用程序)同时调用的可执行二进制文件,是一个可共享的库.DLL是建立在客户/服务器通信的概念上,包含若干函数.类或资源的库文件,函数和数据被存储在一个DLL(服务器)上并由一个或多个客户导出而使用,这些客户可以是应用程序或者是其它的DLL. 在下面我们将通过一个具体的例子来说明如何利用VC.Net定义一个DLL文件,并且在VC.Net的应用程序中调用,这个例子的主要

VC++.NET中定义和使用MFC DLL(二)

在VC.Net中使用DLL文件 新建一个基于对话框的VC.Net工程DemoTestDLL,界面如下图(运行结果图): 为了让DemoTestDLL能够调用TestDLL.dll程序,需要让前者能够"看见" DLL程序.我们将TestDLL.dll文件考到DemoTestDLL的Debug目录下,一个Windows程序定位DLL的次序是: 1. 包含EXE文件的目录. 2. 进程的当前工作目录. 3. Windows系统目录. 4. Windows目录. 5. 列在Path环境变量中的

VC++动态链接库(DLL)非MFC DLL介绍

  4.1一个简单的DLL 第2节给出了以静态链接库方式提供add函数接口的方法,接下来我们来看看怎样用动态链接库实现一个同样功能的add函数. 如图6,在VC++中new一个Win32 Dynamic-Link Library工程dllTest(单击此处下载本工程附件).注意不要选择MFC AppWizard(dll),因为用MFC AppWizard(dll)建立的将是第5.6节要讲述的MFC 动态链接库. 图6 建立一个非MFC DLL 在建立的工程中添加lib.h及lib.cpp文件,源