如何编写线程安全的DLL

在我的工作中经常会编写DLL,这些DLL有个共同的特点就是都有一个初始化函数,一个资源释放函数,其他几个函数都是核心功能函数。而且这些DLL有时会被多个进程同时调用,这就牵扯到多进程的多线程调用DLL的问题。有点绕口,以下我根据我实践中遇到的问题,分四种情况分享一下我解决此类问题的经验: 1...

2013-05-03 10:28:28

阅读数 607

评论数 0

动态链接库中分配内存引起的问题-- windows已在XX.exe中触发一个断点

动态链接库中分配内存引起的 本文主要是探讨关于在动态链接库分配的内存在主程序中释放所产生的问题,该问题是我在刚做的PJP工程中所遇到的,由于刚碰到之时感动比较诡异(这也是学识不够所致),所以将它写下来,大家一起分享. 问题来由: 由于该工程中要用到声音,所以我的分工之一就是用Di...

2013-05-03 09:30:24

阅读数 648

评论数 0

多线程调用MFC DLL、在MFC DLL创建多线程与线程安全

多线程调用: 1、动态库只有一个导出函数: 这种情况非常少,也是最容易处理的情况。这种情况下编写函数时,只需要考虑不要有冲突的全局数据就可以了。这里的全局数据包括了在堆中分配的数据块和静态全局变量等。如果存在这样的全局数据,那么进程中的不同线程访问这个函数就会造成冲突。 解决办法也很...

2013-05-03 09:14:35

阅读数 1023

评论数 0

MFC VC中使菜单项变灰

一、没有UpdateCmdUI句柄时 MFC中缺省的习惯是当没有UpdateCmdUI句柄时程序是使能(Enable)菜单,菜单自动变成使能,只要关掉缺省值就可以了,把下面的代码加入你的程序 CMainFrm::CMainFrm { // Other stuff this-&...

2013-05-02 20:57:53

阅读数 1593

评论数 0

VC非模态对话框创建和销毁

非模态(Modeless)对话框,又叫做无模式对话框,当用户打开非模态对话框时,依然可以操作其他窗口。 非模态对话框相对于模态对话框,他的创建和销毁过程和模态对话框有一定的区别 先看一下MSDN的原文: When you implement a modeless dialog box...

2013-04-20 21:53:19

阅读数 603

评论数 0

MFC UpdateData(FALSE)和UpdateData(TRUE)的作用

在VC里,可以为对话框上的控件设置对应的变量,如文本框可以设置对应的 CString变量,但是在程序中修改文本框的内容时,对应的CString变量不会随着改变,需要调用UpdateData(TRUE)来改变变量。类 似的,程序中改变了CString变量,也需要调用UpdateData(FALSE)...

2013-04-20 21:27:06

阅读数 674

评论数 0

VC中控件按TAB键的顺序

在编辑界面按下ctrl+D键,就会出现所有控件的Tab键顺序,按照自己想要的顺序依次点击控件,就可以重新安排顺序。

2013-04-20 20:55:43

阅读数 623

评论数 0

VC 中调用Fortran动态链接库函数开发说明

说明:使用Fortran建立动态链接库,在C/C++语言环境中载入动态链接库,并调用动态链接库中函数。此方法使用动态载入动态链接库的方法。 开发环境: Compaq Visual Fortran 6.5 Visual C++ 6.0 1. 程序中特殊要求: 1.1 Fortran...

2013-04-17 11:33:48

阅读数 640

评论数 0

opengl在vs2010下的配置

使用Win 7系统。 glut下载地址: http://www.opengl.org/resources/libraries/glut/glutdlls37beta.zip glut.h ---> C:/Program Files (x86)/Microsoft SDKs/Window...

2013-04-14 15:46:00

阅读数 480

评论数 0

DLL的灾难---DEBUG与RELEASE版本不能交叉调用

让我们先看一段引文,再来进行心灵的探索: If you have an EXE and a DLL. When your exe APP was built Debug Mode, your Dll must be Debug mode.  When your exe APP w...

2013-04-13 20:09:43

阅读数 648

评论数 0

MFC TRACE宏的使用

1.在MFC中加入TRACE语句 2.在TOOLS->MFC TRACER中选择 “ENABLE TRACING”点击OK 3.进行调试运行,GO(F5)(特别注意:不是执行‘!’以前之所以不能看到TRACE内容,是因为不是调试执行,而是‘!’了,切记,切记) 4.然后就会...

2013-04-13 19:28:36

阅读数 612

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭