C/C++

vc++打包发布自带依赖dll

问题 相信很多人都遇到过vx项目打包发布出去之后,用户安装运行提示缺少mfc140u.dll(数字是vc版本决定的),然而奇怪的是很少有人讨论具体怎么解决这个问题 我尝试过的办法 静态发布 编译时候选择静态方式使用mfc,all done,打包之后的程序自带依赖 问题: 某些依赖组件只有dll,没有lib。别问我为什么,这里不做讨论。这时候就没办法使用静态方式的mfc了 安装启动vc发型包安装 innosetup打包安装程序时候,打包vc发型包,安装过程中进行安装。 [Files] Source: "D:\dep\mfc140u.dll"; DestDir: "{app}"; Flags: ignoreversion [Run] ;Filename: {tmp}\vc_redist.x86.exe; Parameters: "/q /passive /Q:a /c:""msiexec /q /i vcredist.msi"""; StatusMsg: "Installing VC++ 2017 Redistributables..." 问题: 装完要重启,不然找不到mfc140u.dll 安装包体积大 查看dll依赖,innosetup制作安装包时候拷贝 查看依赖 > cd c:\Program Files (x86)\Microsoft Visual...

VC++线程安全退出

完善线程退出机制 加入线程退出条件变量m_bQuitThread, 初始化为false. 在线程内的循环中加入退出变量检测,当m_bQuitThread为true时,主动结束线程 在程序退出时,首先设置m_bQuitThread为true,而后使用WaitForSingleObject等待线程完全退出 代码 CDialogList::CDialogList(CWnd* pParent /*=nullptr*/) : CDialogEx(IDD_DIALOG_LIST, pParent) { m_bQuitThread = false; } // 启动线程 m_refreshLatencyThread = AfxBeginThread((AFX_THREADPROC)RefreshThread, this); // 退出逻辑 void CDialogrList::EndThread() { m_bQuitThread = true; WaitForSingleObject(m_refreshLatencyThread->m_hThread, INFINITE); TRACE(TEXT("线程已经退出")); } 这么做其实是有问题的。假设一种情况,EndThread()中,m_bQuitThread = true和WaitFor...

Socket的11种状态

Socket的11种状态 Socket状态汇总 客户端 SYN_SEND FIN_WAIT1 FIN_WAIT2 CLOSING TIME_WAIT 服务器 LISTEN SYN_RECV CLOSE_WAIT LAST_ACK 共有 CLOSED ESTABLISHED

c++虚函数和多态

本实验通过两组实验来对比virtual对函数执行情况的影响。第一组实验用于验证virtual关键字对析构函数执行顺序的影响。第二组实验用于virtual关键字对一般函数执行的影响。 实验1:virtual析构函数 类结构:假设有基类A,A有派生类B1和B2,B2有派生类B3。 我们用三组实验来对照virtual关键字对析构函数执行的影响 基类A的析构函数~A不加virtual关键字,子类B1析构函数加virtual,子类B2析构函数不加virtual 基类A的析构函数~A加virtual关键字,子类B1析构函数加virtual,子类B2析构函数不加virtual,子类B3析构函数不加virtual 基类A的析构函数~A加virtual关键字,子类B1析构函数加virtual,子类B2析构函数加virtual 实验1.1 基类A的析构函数~A不加virtual关键字,子类B1析构函数加virtual,子类B2析构函数不加virtual #include <iostream> using namespace std; class A{ public: ~A(); }; A::~A(){ cout<<"destruct A"<<endl; } class B1 : public A{ public: virtual...
执行时间: 35.562992095947 毫秒