lib文件不是有效的win32应用程序

萌新在学习live555的过程中
(学习链接https://blog.csdn.net/qq_29350001/article/details/77962082)

进行到第五步编译生成最后一步mediaServer可以生成,但不能编译。
截图为图片说明

我尝试重新生成不能运行的文件,依旧无法解决
本人使用vs2017,下载的是最新live555,望解答

即问题如下:live555中生成的BasicUsageEnvironment.lib文件不是有效的win32应用程序

c++
wkd_007
wkd_007 https://blog.csdn.net/wkd_007/article/details/102586450
4 个月之前 回复
wkd_007
wkd_007
4 个月之前 回复
weixin_44068580
天才大叔 回复咸鱼挣扎记: 目前无法解决,但是在进行运行后发现了该程序生成可执行文件,可以运行并且实现架设服务器
10 个月之前 回复
weixin_36314577
咸鱼挣扎记 请问博主解决这个问题了吗
10 个月之前 回复
weixin_44068580
天才大叔 回复蒋晟: 好哒
11 个月之前 回复
jiangsheng
蒋晟 贴文字,图片不便于搜索。
11 个月之前 回复

1个回答

我遇到了类似的问题,我的Windows版本是win7,我感觉我的问题来自于VS17默认使用win10的目标平台,且不能修改为win7,所以生层的lib以及dll只能在win10里面用,win7就用不了。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
VS2013 应用程序无法启动0xC000007B
VS2013 X86 WIN7 编译程序通过,运行的时候提示缺少hal.dll文件,从system32复制hal文件过来,提示0xC000007B无法程序启动,之后放到xp环境在内核调试模式下发现程序通过KiCallInitRoutine调用hal文件的入口函数,而这个入口函数会检测TEB+1C处的EnvironmentPointer指针,比较[environmentpointer+51]处的一字节是否为0,行为此处的指针为0,所以导致访问了 [0x00000051]出现访问违例。 不明白为什么会出现这样的错误,程序因为要调用内核字符串函数,所以在源程序中包含了ntoskrnl.lib,希望大牛们指点一下
win32控制台程序无法找到main函数入口
// FO9-UDP.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <stdio.h> #include <winsock.h> #include <winioctl.h> #pragma comment(lib,"WS2_32") int sd; /* Socket Discripter */ struct sockaddr_in my; struct sockaddr_in dst; struct sockaddr_in from; #define MY_IP 0xC0A8010A // 自身的IP 地址:192.168.001.010 #define MY_PORT 10010 // 自身的端口编号 #define DST_IP 0xC0A80106 // 对方的IP 地址:192.168.001.006 #define DST_PORT 10020 // 对方的端口编号 unsigned char sbuf[2048]; unsigned char rbuf[2048]; // 存在于218TCP.C 中 void main_udp(void); extern void mk_cmd_data(void); extern int chk_rsp_data(int); // 读取扩展MEMOBUS 协议、保持寄存器的内容(SFC=09),制作命令 void mk_cmd_data(void) { // 218 标题部的制作 // 数据类型设定 sbuf[0] = 0x11;// 扩展MEMOBUS (指令命令) // 串行编号设定(每次发送时增加) sbuf[1] = 0x00; // 设定发送目标的通道编号 sbuf[2] = 0x00; // PLC 侧通道不固定,因此可固定为0 // 设定发送目标的通道编号 sbuf[3] = 0x00; // 因电脑中无通道概念,固定为0。 sbuf[4] = 0x00; // 备用 sbuf[5] = 0x00; // 备用 // 所有数据数设定(从218 标题的首部到MEMOBUS 数据的最后) sbuf[6] = 0x16; // L (22 字节=218 标题(12 字节)+ MEMOBUS 数据(10 字节)) sbuf[7] = 0x00; // H sbuf[8] = 0x00;// 备用 sbuf[9] = 0x00;// 备用 sbuf[10] = 0x00;// 备用 sbuf[11] = 0x00;// 备用 // MEMOBUS 数据部的制作 // Length 为从MFC 开始到数据的最后 sbuf[12] = 0x08; // MEMOBUS 数据长度(L) sbuf[13] = 0x00; // MEMOBUS 数据长度(H) // MFC 固定为0x20 sbuf[14] = 0x20; // SFC 为0x09 (读取保持寄存器的内容(扩展)) sbuf[15] = 0x09; // CPU 编号设定 sbuf[16] = 0x10; // 对方为CPU1。多台时为1-4。自身的CPU 编号固定为0。 sbuf[17] = 0x00; // Spare 固定为0 // 参考编号设定 sbuf[18] = 0x00; // Adr(L) 首地址为MW0 sbuf[19] = 0x00; // Adr(H) // 寄存器数设定 sbuf[20] = 0x0A; // DataNum(L) 从首地址读取10 字 sbuf[21] = 0x00; // DataNum(H) } // 响应数据的检查 int chk_rsp_data( int rlen ) { int rc; rc = 0; // 所有数据长度的检查 if ( rlen != 40 )// 读取10 字对应的响应为40 字节 // (218 标题(12 字节)+MEMOBUS 数据(28 字节)) { rc = -1; return( rc ); } // 数据包类型检查 if ( rbuf[0] != 0x19 )// 非MEMOBUS 响应 { rc = -2; return( rc ); } // 串行编号检查 if (sbuf[1] != rbuf[1] )// 与命令的串行编号不一致 { rc = -3; return( rc ); } // 传送文件中的所有数据长度的检查 if (( rbuf[6] != 0x28 ) &&(rbuf[7] !=0x00))// 40 字节= 218 标题(12 字节)+MEMOBUS 数据(28 字节) { rc = -4; return( rc ); } // MEMOBUS 数据长度检查 if (( rbuf[12] != 0x1A ) || (rbuf[13] != 0x00))// 26 字节 { rc = -5; return( rc ); } // MFC 的检查 if ( rbuf[14] != 0x20 )// MFC 固定为0x20 { rc = -6; return( rc ); } // SFC 的检查 if ( rbuf[15] != 0x09 )// SFC 为0x09 (读取保持寄存器的内容) { rc = -7; return( rc ); } // 寄存器数的检查 if (( rbuf[18] != 0x0A ) || (rbuf[19] != 0x00))// 非10 字 { rc = -8; return( rc ); } // 读取寄存器数据rbuf[20] 以后 return( rc ); } void main_udp(void) { WSADATA wsadata; int rc, slen, rlen, fromlen; // Winsock.dll 的使用声明(最初必需) rc = WSAStartup( 0x0101, &wsadata ); if ( rc != 0 ) { exit(0); } // sockaddr 构造体(IP 地址、端口编号等)的清零 memset( (char *)&my, 0, sizeof(struct sockaddr)); memset( (char *)&dst, 0, sizeof(struct sockaddr)); // 自身的IP 地址、端口编号的声明 my.sin_family = AF_INET; my.sin_addr.s_addr = htonl( MY_IP ); my.sin_port = htons( MY_PORT ); // 对方的IP 地址、端口编号的声明 dst.sin_family = AF_INET; dst.sin_addr.s_addr = htonl( DST_IP ); dst.sin_port = htons( DST_PORT ); // UDP 套接字的生成 sd = socket( AF_INET, SOCK_DGRAM, 0 ); if ( sd <= 0 ) { printf( "Error: Socket !!\n" ); exit(0); } // 自局端口编号的捆绑配置 rc = bind( sd, ( struct sockaddr *)&my, sizeof(struct sockaddr_in)); if ( rc == -1 ) { closesocket( sd ); printf( "Error: bind !!\n" ); exit(0); } // 分配自局端口编号后,制作指令数据。 mk_cmd_data(); // 反复执行发送命令和接收响应。 while(1) { // 发送命令数据 // 主控制器不能发送数据时,该处理不会结束。 slen = sendto( sd, reinterpret_cast<const char *>(&sbuf[0]), 22, 0, (struct sockaddr *)&dst, sizeof(struct sockaddr)); // 发送命令(22 字节) if ( slen != 22 )// 如果发送成功,则返回发送的字节数(22 字节)。 { closesocket(sd); printf( "Error: Send !! -> %d\n", slen ); exit(0); } // 接收响应数据 // 子控制器没有发送数据时,该处理不会结束。 fromlen = sizeof(struct sockaddr); //将rbuf从无符号变量,转换为指针变量1-4字节 rlen = recvfrom( sd, reinterpret_cast<char *>(&rbuf[0]), sizeof(rbuf), 0, (struct sockaddr *)&from, &fromlen ); // 接收对方发送的数据 if ( rlen <= 0 )// 如果接收错误则返回0 以下 { closesocket(sd); printf( "Error: Recv !! -> %d\n", rlen ); exit(0); } // 响应数据的检查 rc = chk_rsp_data( rlen ); if ( rc != 0 )// 接收数据异常 { closesocket(sd); exit(0); } sbuf[1] ++;// 增加218 标题的串行编号 printf( "Hit Any Key !!\n" ); } } MSVCRTD.lib(crtexe.obj) : error LNK2019: 无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用 已尝试修改项目预处理及系统配置属性,更改为CONSOLE,但是仍然报错?求解
无法解析的外部符号 _WinMain@16
编译环境:visual studio 2010 一直使用这个环境编译,都没出过问题,但自从某一次把某个程序运行了一下之后就显示了如下的错误提示 —————— MSVCRTD.lib(crtexew.obj) : error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用 1>F:\Projects\程设\expreriment8-3x\Debug\expreriment8-3x.exe : fatal error LNK1120: 1 个无法解析的外部命令 —————— 我新建项目的流程是:win32控制台程序-->控制台应用程序-->空项目-->添加源文件 我试过网上很多人给出的修改项目属性中console变成windows的做法,但是每次修改完之后就会出现 “元素 <SubSystem> 具有无效值 ……” 一类的提醒。 急求各位大神给出可操作的解决办法!十分感谢!
C# WinForm DevComponents.DotNetBar2 别的电脑上运行报错
问题描述: C# WinForm程序用了第三方的控件DevComponents.DotNetBar2.dll,所用的DotNetBar2是破解的安装版。应用程序是Visual studio 2010上开发的,开发时本机能正常使用, 但是编译完成后,发到其他电脑上运行报错,错误截图如下: ![图片说明](https://img-ask.csdn.net/upload/201711/23/1511412943_971726.png) 点开【详细信息】如下: 有关调用实时(JIT)调试而不是此对话框的详细信息, 请参见此消息的结尾。 ************** 异常文本 ************** System.Runtime.InteropServices.COMException (0x80040154): 没有注册类 (异常来自 HRESULT:0x80040154 (REGDB_E_CLASSNOTREG)) 在 System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(Guid& clsid, Object punkOuter, Int32 context, Guid& iid) 在 System.Windows.Forms.AxHost.CreateWithLicense(String license, Guid clsid) 在 System.Windows.Forms.AxHost.CreateInstanceCore(Guid clsid) 在 System.Windows.Forms.AxHost.CreateInstance() 在 System.Windows.Forms.AxHost.GetOcxCreate() 在 System.Windows.Forms.AxHost.TransitionUpTo(Int32 state) 在 System.Windows.Forms.AxHost.CreateHandle() 在 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) 在 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) 在 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) 在 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) 在 System.Windows.Forms.Control.CreateControl() 在 System.Windows.Forms.Control.OnVisibleChanged(EventArgs e) 在 System.Windows.Forms.ScrollableControl.OnVisibleChanged(EventArgs e) 在 System.Windows.Forms.Control.SetVisibleCore(Boolean value) 在 DevComponents.DotNetBar.Metro.MetroTabPanel.set_Visible(Boolean value) 在 DevComponents.DotNetBar.Metro.MetroTabItem.?() 在 DevComponents.DotNetBar.Metro.MetroTabItem.set_Panel(MetroTabPanel value) 在 Courseware.MainForm.InitializeComponent() 位置 D:\workspace_vs2010\CoursewareNetImage\Courseware\MainForm.designer.cs:行号 391 在 Courseware.MainForm..ctor(LoginForm loginForm) 位置 D:\workspace_vs2010\CoursewareNetImage\Courseware\MainForm.cs:行号 35 在 Courseware.LoginForm.button1_Click(Object sender, EventArgs e) 位置 D:\workspace_vs2010\CoursewareNetImage\Courseware\LoginForm.cs:行号 513 在 System.Windows.Forms.Control.OnClick(EventArgs e) 在 System.Windows.Forms.Button.OnClick(EventArgs e) 在 System.Windows.Forms.Button.WndProc(Message& m) 在 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) 在 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) 在 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) ************** 已加载的程序集 ************** mscorlib 程序集版本: 4.0.0.0 Win32 版本: 4.0.30319.1 (RTMRel.030319-0100) 基本代码: file:///C:/Windows/Microsoft.NET/Framework/v4.0.30319/mscorlib.dll ---------------------------------------- Courseware 程序集版本: 1.0.0.0 Win32 版本: 1.0.0.0 基本代码: file:///E:/系统网络版无OFFICE新版/Courseware.exe ---------------------------------------- System.Windows.Forms 程序集版本: 4.0.0.0 Win32 版本: 4.0.30319.1 built by: RTMRel 基本代码: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms/v4.0_4.0.0.0__b77a5c561934e089/System.Windows.Forms.dll ---------------------------------------- System.Drawing 程序集版本: 4.0.0.0 Win32 版本: 4.0.30319.1 built by: RTMRel 基本代码: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Drawing/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll ---------------------------------------- System 程序集版本: 4.0.0.0 Win32 版本: 4.0.30319.1 built by: RTMRel 基本代码: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System/v4.0_4.0.0.0__b77a5c561934e089/System.dll ---------------------------------------- log4net 程序集版本: 1.2.11.0 Win32 版本: 1.2.11.0 基本代码: file:///E:/系统网络版无OFFICE新版/log4net.DLL ---------------------------------------- System.Core 程序集版本: 4.0.0.0 Win32 版本: 4.0.30319.1 built by: RTMRel 基本代码: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Core/v4.0_4.0.0.0__b77a5c561934e089/System.Core.dll ---------------------------------------- System.Data.SQLite 程序集版本: 1.0.99.0 Win32 版本: 1.0.99.0 基本代码: file:///E:/系统网络版无OFFICE新版/System.Data.SQLite.DLL ---------------------------------------- System.Data 程序集版本: 4.0.0.0 Win32 版本: 4.0.30319.1 (RTMRel.030319-0100) 基本代码: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Data/v4.0_4.0.0.0__b77a5c561934e089/System.Data.dll ---------------------------------------- System.Xml 程序集版本: 4.0.0.0 Win32 版本: 4.0.30319.1 built by: RTMRel 基本代码: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Xml/v4.0_4.0.0.0__b77a5c561934e089/System.Xml.dll ---------------------------------------- System.Transactions 程序集版本: 4.0.0.0 Win32 版本: 4.0.30319.1 (RTMRel.030319-0100) 基本代码: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.Transactions/v4.0_4.0.0.0__b77a5c561934e089/System.Transactions.dll ---------------------------------------- DevComponents.DotNetBar2 程序集版本: 12.2.0.7 Win32 版本: 12.2.0.7 基本代码: file:///E:/系统网络版无OFFICE新版/DevComponents.DotNetBar2.DLL ---------------------------------------- System.Configuration 程序集版本: 4.0.0.0 Win32 版本: 4.0.30319.1 (RTMRel.030319-0100) 基本代码: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Configuration/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.Configuration.dll ---------------------------------------- System.EnterpriseServices 程序集版本: 4.0.0.0 Win32 版本: 4.0.30319.1 (RTMRel.030319-0100) 基本代码: file:///C:/Windows/Microsoft.Net/assembly/GAC_32/System.EnterpriseServices/v4.0_4.0.0.0__b03f5f7f11d50a3a/System.EnterpriseServices.dll ---------------------------------------- System.Numerics 程序集版本: 4.0.0.0 Win32 版本: 4.0.30319.1 built by: RTMRel 基本代码: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Numerics/v4.0_4.0.0.0__b77a5c561934e089/System.Numerics.dll ---------------------------------------- AxInterop.APlayer3Lib 程序集版本: 1.0.0.0 Win32 版本: 1.0.0.0 基本代码: file:///E:/系统网络版无OFFICE新版/AxInterop.APlayer3Lib.DLL ---------------------------------------- mscorlib.resources 程序集版本: 4.0.0.0 Win32 版本: 4.0.30319.1 (RTMRel.030319-0100) 基本代码: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/mscorlib.resources/v4.0_4.0.0.0_zh-Hans_b77a5c561934e089/mscorlib.resources.dll ---------------------------------------- System.Windows.Forms.resources 程序集版本: 4.0.0.0 Win32 版本: 4.0.30319.1 built by: RTMRel 基本代码: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/System.Windows.Forms.resources/v4.0_4.0.0.0_zh-Hans_b77a5c561934e089/System.Windows.Forms.resources.dll ---------------------------------------- Accessibility 程序集版本: 4.0.0.0 Win32 版本: 4.0.30319.1 built by: RTMRel 基本代码: file:///C:/Windows/Microsoft.Net/assembly/GAC_MSIL/Accessibility/v4.0_4.0.0.0__b03f5f7f11d50a3a/Accessibility.dll ---------------------------------------- ************** JIT 调试 ************** 要启用实时(JIT)调试, 该应用程序或计算机的 .config 文件(machine.config)的 system.windows.forms 节中必须设置 jitDebugging 值。 编译应用程序时还必须启用 调试。 例如: <configuration> <system.windows.forms jitDebugging="true" /> </configuration> 启用 JIT 调试后,任何未经处理的异常 都将被发送到在此计算机上注册的 JIT 调试器, 而不是由此对话框处理。 我经过分析,发现DevComponents.DotNetBar2.dll在开发电脑上已经写入了注册表,应该是注册到了全局程序集GAC,如下图: ![图片说明](https://img-ask.csdn.net/upload/201711/23/1511413357_66205.png) 通过查找应用程序中代码{DevComponents.DotNetBar.Metro.MetroShell metroShell1;}的类的定义,也应验了实际上我的程序里使用的DevComponents.DotNetBar的类都是来自于GAC,如下图所示: ![图片说明](https://img-ask.csdn.net/upload/201711/23/1511413429_346565.png) 我现在的疑问是:C#项目根目录下已经存放了一个DevComponents.DotNetBar2.dll文件,并且已添加了此dll文件的引用(见下图),为什么程序最终使用的DevComponents.DotNetBar2.dll却是来自GAC而不是项目引入的dll,如何在C#项目中改变dll的程序集指向,不要用GAC的程序集?(因为使用这个应用程序的电脑不可能安装GAC全局程序集) ![图片说明](https://img-ask.csdn.net/upload/201711/23/1511414544_396136.png) P.S. 网上查了各种资料,有的说是使用.net framework 4.0及项目的setup属性改成x86,这些设置我都已查验过,开发电脑上设置都是对的,非开发用的电脑上也确认安装的是.net framework 4.0。
关于C++MFC项目的问题
1>------ 已启动生成: 项目: MFC_DEMO, 配置: Debug Win32 ------ 1>LINK : fatal error LNK1104: 无法打开文件“libucrtd.lib” 新人求大神解答!感激不尽 ![图片说明](https://img-ask.csdn.net/upload/201512/23/1450859712_526636.png) 错误如上,还望大神指正!下方是MFC_DEMODlg的代码 #include "stdafx.h" #include "MFC_DEMO.h" #include "MFC_DEMODlg.h" #include "afxdialogex.h" #ifdef _DEBUG #define new DEBUG_NEW #endif // 用于应用程序“关于”菜单项的 CAboutDlg 对话框 class CAboutDlg : public CDialogEx { public: CAboutDlg(); // 对话框数据 #ifdef AFX_DESIGN_TIME enum { IDD = IDD_ABOUTBOX }; #endif protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 实现 protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialogEx(IDD_ABOUTBOX) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP() // CMFC_DEMODlg 对话框 CMFC_DEMODlg::CMFC_DEMODlg(CWnd* pParent /*=NULL*/) : CDialogEx(IDD_MFC_DEMO_DIALOG, pParent) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); } void CMFC_DEMODlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CMFC_DEMODlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_BUTTON1, &CMFC_DEMODlg::OnBnClickedButton1) END_MESSAGE_MAP() // CMFC_DEMODlg 消息处理程序 BOOL CMFC_DEMODlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { BOOL bNameValid; CString strAboutMenu; bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // 设置此对话框的图标。 当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } void CMFC_DEMODlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialogEx::OnSysCommand(nID, lParam); } } // 如果向对话框添加最小化按钮,则需要下面的代码 // 来绘制该图标。 对于使用文档/视图模型的 MFC 应用程序, // 这将由框架自动完成。 void CMFC_DEMODlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使图标在工作区矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标 dc.DrawIcon(x, y, m_hIcon); } else { CDialogEx::OnPaint(); } } //当用户拖动最小化窗口时系统调用此函数取得光标 //显示。 HCURSOR CMFC_DEMODlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); } void CMFC_DEMODlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 IplImage *image = NULL; if (image)cvReleaseImage(&image); image= cvLoadImage("D:\\demo.jpg", 1); DrawPicToHDC(image, IDC_STATIC); } void CMFC_DEMODlg::DrawPicToHDC(IplImage *img, UINT ID) { CDC* pDC=GetDlgItem(ID)->GetDC(); HDC hDC = pDC->GetSafeHdc(); CRect rect; GetDlgItem(ID)->GetClientRect(&rect); CvvImage cimg; cimg.CopyOf(cimg); cimg.DrawToHDC(hDC, &rect); ReleaseDC(pDC); }
invalid null pointer!
![图片说明](https://img-ask.csdn.net/upload/201705/07/1494168216_985520.png) ``` // win_cDemo.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "tinyxml.h" #include "NLPIR.h" #include <stdio.h> #include <stdlib.h> #include<windows.h> #include <fstream> #include <iostream> #include <string> #include <hash_map> #include <WinSock.h> #include <mysql.h> using namespace std; #pragma comment(lib,"tinyxml.lib") #pragma comment(lib, "NLPIR.lib") #pragma comment(lib, "ws2_32.lib") #pragma comment(lib, "libmysql.lib") //存放字典数据的hashMap hash_map<string,float> hmDic; //计算运行时间的变量 DWORD start_time,end_time; //mysql文件 MYSQL mysqlData; string user,passwd; void processDictionary(string filename,float weight) { ifstream fin(filename.c_str()); if( !fin ) { cout << "Error opening " << filename << " for input" << endl; return; } string buf; while(fin>>buf) { hmDic.insert(make_pair(buf,weight)); } cout<<"Process Dictionary "<<filename<<" Success"<<endl; } void processConfigure() { //获取XML对象 TiXmlDocument doc; //装载文件 doc.LoadFile("configure.xml"); //获取dics TiXmlElement *dicsLevel = (doc.RootElement())->FirstChildElement(); //获取dic TiXmlElement *dicLevel=dicsLevel->FirstChildElement(); TiXmlElement *pathLevel,*weightLevel; start_time = GetTickCount64();//获取开始时间 cout<<"Process Begin, Please Wait Patient"<<endl; while (dicLevel != NULL)// { pathLevel = dicLevel->FirstChildElement();//获取path weightLevel = pathLevel->NextSiblingElement();//获取weight //cout<<pathLevel->GetText()<<":"<<weightLevel->GetText()<<endl; //处理文本 string filename =pathLevel->GetText(); float weight = atof(weightLevel->GetText()); //cout<<filename<<"|"<<weight+1<<endl; processDictionary(filename,weight); dicLevel=dicLevel->NextSiblingElement(); } end_time = GetTickCount64();//获取结束时间 cout<<"Process All Dictionary Use "<<end_time-start_time<<" ms"<<endl; //获取mysql TiXmlElement *mysqlLevel = dicsLevel->NextSiblingElement(); TiXmlElement *userLevel,*passwdLevel; userLevel = mysqlLevel->FirstChildElement();//获取user passwdLevel = userLevel->NextSiblingElement();//获取passwd user = userLevel->GetText(); passwd = passwdLevel->GetText(); } int sentenceAnalysis(string sSentence) { try { const result_t *pVecResult; int nCount; //对句子进行分词 pVecResult=NLPIR_ParagraphProcessA(sSentence.c_str(),&nCount); float totalNum = 0;//句子总的情感值 float tmpNum = 0;//每个字句的情感值 float tmpD = 1;//用来存放临时副词的变量 bool isTmpDSet = 0;//是否有副词被设置 for (int i=0;i<nCount;i++) { string ciXin = pVecResult[i].sPOS;//词性 //不存在词性则跳过 if(ciXin.empty()) { continue; } //词性中包含'w'(即标点符号),表示当前的一个子句已经处理完毕 if(ciXin[0]=='w') { totalNum += tmpNum; tmpNum = 0; continue; } //如果不是形容词a,副词d,动词v,名词n,数词m,则不处理 if(!(ciXin=="a"||ciXin=="d"||ciXin=="v"||ciXin=="n"||ciXin=="m")) continue; string tmp = sSentence.substr(pVecResult[i].start,pVecResult[i].length); auto itr=hmDic.find(tmp); if(itr!=hmDic.end()) { if(ciXin=="d")//如果副词后面接副词,进行多重复合 { tmpD *= itr->second; isTmpDSet = 1; } else if(isTmpDSet)//如果之前存在副词 { tmpNum += tmpD * itr->second; isTmpDSet = 0; } else { tmpNum += itr->second;//不存在副词的影响,直接加减 } } } return totalNum; } catch(...) { //对出错的情况进行默认处理 return 0; } } void initMysql() { try { mysql_init(&mysqlData); // localhost:服务器 root为账号,123456为密码 test为数据库名 3306为端口 if(!mysql_real_connect(&mysqlData, "localhost","root","","fooddata",3306,NULL,0)) { cout<<"database connect fail"<<endl; exit(1); } else cout<<"database connect success"<<endl; } catch (...) { exit(1); } } int main() { //初始化分词器 if(!NLPIR_Init()) { printf("Init fails\n"); return -1; } //首先读取配置文件,建立字典数据 processConfigure(); //初始化mysql数据库 initMysql(); //存储每一行数据 string text; //查询所有结果 string sqlstr = "SELECT id,text,kind FROM comment"; MYSQL_RES *result = NULL; if (0 == mysql_query(&mysqlData, sqlstr.c_str())) { //一次性取得数据集 result = mysql_store_result(&mysqlData); //获取每一行 MYSQL_ROW row = NULL; row = mysql_fetch_row(result); start_time = GetTickCount64(); while (NULL != row) { text = row[1]; //对每个句子进行分词 int answer = sentenceAnalysis(text); if(answer>0) cout<<"正面评价"<<endl; else if(answer<0) cout<<"负面评价"<<endl; else cout<<"中性评价"<<endl; row = mysql_fetch_row(result); } end_time = GetTickCount64(); cout<<"Text all rows use "<<end_time-start_time<<" ms"<<endl; } //关闭数据库 // mysql_close(&mysqlData); //释放分词器资源 NLPIR_Exit(); return 0; } ``` 求大神看看这个怎么修改???
关于visual studio 的问题
这里有个关于visual studio的问题,c++语言,win32控制台应用程序,调试不出来,求大神们解答 // 162.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "iostream" #include "winsock2.h" #include "fstream" #include "process.h" #define PORT 65432 #pragma comment(lib,"ws2_32.lib") using namespace std; char Command[20]; char filename[128]; char fname[128]; ifstream inFile; unsigned int _stdcall GetCommand(void *par); unsigned int _stdcall SendFlie(void *par); int _tmain(int argc, _TCHAR* argv[]) { /******定义相关变量*******/ int sock_server; struct sockaddr_in addr,client_addr; unsigned hThread1,hThread2; unsigned int ThreadID1,ThreadID2; int addr_len=sizeof(struct sockaddr_in); cout<<"请输入要发送的文件名:\n"; cin>>filename; /*******以二进制打开要分发的文件********/ inFile.open(filename,ios::in|ios::binary); if(!inFile.is_open()) { cout<<"Cannot open "<<filename<<endl; return 0; } /*********截取发送给客户端的文件名*********/ int len=strlen(filename); int i=len; while(filename[i]!='\\'&&i>=0) i--; if(i<0) i=0; else i++; int m=0; while(filename[m+i]!='\0') { fname[m]=filename[m+i]; m++; } /*******初始化winsock DLL******/ WSADATA wsaData; WORD wVersionRequested=MAKEWORD(2,2); if(WSAStartup(wVersionRequested,&wsaData)!=0) { cout<<"加载winsock.DLL失败!\n"; return 0; } /******创建套接字*****/ if((sock_server=socket(AF_INET,SOCK_STREAM,0))<0) { cout<<"创建套接字失败!\n"; WSACleanup(); return 0; } /*****设置套接字为非阻塞模式*****/ unsigned long ul=1; int nRet=ioctlsocket(sock_server,FIONBIO,(unsigned long *)&ul); if(nRet==SOCKET_ERROR) { cout<<"设置套接字选项失败!\n"; closesocket(sock_server); WSACleanup(); return 0; } /******绑定IP接口******/ memset((void *)&addr,0,addr_len); addr.sin_family =AF_INET; addr.sin_port =htons(PORT); addr.sin_addr.s_addr=htonl(INADDR_ANY); if(bind(sock_server,(LPSOCKADDR)&addr,sizeof(addr))!=0) { cout<<"绑定IP地址失败!\n"; closesocket(sock_server); WSACleanup(); return 0; } /*****开始监听*****/ if(listen(sock_server,5)!=0) { cout<<"listen函数调用失败!\n"; closesocket(sock_server); WSACleanup(); return 0; } else cout<<"listenning......\n"; /*****启动命令接收线程******/ hThread1=_beginthreadex(NULL,0,GetCommand,(LPVOID)Command,0,&ThreadID1); /******接收并处理客户连接*****/ SOCKET newsock; while(1) { if(strcmp(Command,"close")==0) break; newsock=accept(sock_server,(LPSOCKADDR)&client_addr,&addr_len); if(newsock!=INVALID_SOCKET) { cout<<"connect from "<<inet_ntoa(client_addr.sin_addr)<<endl; hThread2=_beginthreadex(NULL,0,SendFile,(LPVOID)newsock,0,&ThreadID2); } } inFile.close(); closesocket(sock_server); return 0; } unsigned int _stdcall SendFile(void *par) { char buffer[1000]; SOCKET sock=(SOCKET)par; /*****设置套接字为阻塞模式******/ unsigned long ul=0; int nRet=ioctlsocket(sock,FIONBIO,(unsigned long *)&ul); send(sock,(char *)fname,strlen(fname)+1,0); int size=recv(sock,buffer,sizeof(buffer),0); if(strcmp(buffer,"OK")!=0) { cout<<"客户端出错!\n"; closesocket(sock); return 0; } /*****传输文件内容******/ while(!inFile.eof()) { inFile.read(buffer,sizeof(buffer)); //size=inFile.gcount (); send(sock,(char *)buffer,size,0); } cout<<"文件传输结束!\n"; closesocket(sock); return 0; } /******从键盘接收命令的线程函数********/ unsigned int _stdcall GetCommand(void *par) { char *p=(char *)par; while(strcmp(p,"close")!=0) gets(p); return 0; }
新手提问:portaudio实在装不来啊,(为了要装PYaudio)
C++小白,不是很会,未能成功安装,求大神指导: 电脑属性如下图![图片说明](https://img-ask.csdn.net/upload/201902/24/1551004226_195898.png) 在网上找了一篇安装教程文章,链接如下: https://www.cnblogs.com/gaoyaguo/p/5011097.html 看完后云里雾里。我就跟着直觉去安装了。安装流程如下: 1、安装DirectX SDK [DirectX SDK](http://www.microsoft.com/en-us/download/details.aspx?id=6812 "") http://www.microsoft.com/en-us/download/details.aspx?id=6812 是个应用程序,我就直接安装了。 2、下载了PortAudio,并随便解压到了D盘下。 http://portaudio.com/docs/v19-doxydocs/compile_windows.html 我下载的版本为pa_stable_v190600_20161030 3、下载ASIO SDK2.3.2 ,并按教程复制到了刚下载的PortAudio的D:\portaudio\src\hostapi\asio文件夹下并改名为ASIOSDK 4、我双击打开了portaudio\build\msvc\portaudio.sln,VS2015启动 ![图片说明](https://img-ask.csdn.net/upload/201902/24/1551021914_679798.png) 5、按照之前教程,我右键了这里,点击属性。 C/C++—〉代码生成—〉运行时库/MT C/C++—〉代码生成—〉浮点模型=快速 C/C++—〉优化—〉省略框架指针= YES 之后一步原文是“为了抑制的PortAudio运行调试控制台输出项目—〉属性—〉配置属性—〉C/C++—〉预处理器。在该领域的预处理器定义,找到PA_ENABLE_DEBUG_OUTPUT并删除它。控制台将不输出调试信息“ 但是我打开了预处理器,里面并没有这些东西,只写着<不同选项>的。所以我直接复制了教程里的这个代码 PA_USE_ASIO PA_USE_DS (DirectSound) PA_USE_WMME (MME) PA_USE_WASAPI PA_USE_WDMKS PA_USE_SKELETON 在这个空白的栏里,见下图 ![图片说明](https://img-ask.csdn.net/upload/201902/24/1551022469_530353.png) ![图片说明](https://img-ask.csdn.net/upload/201902/24/1551022487_79657.png) ![图片说明](https://img-ask.csdn.net/upload/201902/24/1551022537_927310.png) 之后我就直接生成解决方案了,最后用PIP3安装PYAUDIO时果然还是一样不行。 请大神前辈们教我一下,怎么整。我是自己在自学,问的问题尴尬了点,请前辈们包涵,感谢。 最后附上我安装PYAUDIO时的错误,方便的话帮我看看装不了PYaudio是不是因为没有装PORTAUDIO的问题,跪谢! Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。 C:\Users\Administrator>pip3 install pyaudio Collecting pyaudio Using cached https://files.pythonhosted.org/packages/ab/42/b4f04721c5c5bfc196c e156b3c768998ef8c0ae3654ed29ea5020c749a6b/PyAudio-0.2.11.tar.gz Installing collected packages: pyaudio Running setup.py install for pyaudio ... error Complete output from command c:\users\administrator\appdata\local\programs\p ython\python38\python.exe -u -c "import setuptools, tokenize;__file__='C:\\Users \\ADMINI~1\\AppData\\Local\\Temp\\pip-install-8s3mtmuj\\pyaudio\\setup.py';f=get attr(tokenize, 'open', open)(__file__);code=f.read().replace('\r\n', '\n');f.clo se();exec(compile(code, __file__, 'exec'))" install --record C:\Users\ADMINI~1\A ppData\Local\Temp\pip-record-i5bb3diy\install-record.txt --single-version-extern ally-managed --compile: running install running build running build_py creating build creating build\lib.win-amd64-3.8 copying src\pyaudio.py -> build\lib.win-amd64-3.8 running build_ext building '_portaudio' extension creating build\temp.win-amd64-3.8 creating build\temp.win-amd64-3.8\Release creating build\temp.win-amd64-3.8\Release\src C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -DMS_WIN64=1 -Ic:\users\administrator\appdat a\local\programs\python\python38\include -Ic:\users\administrator\appdata\local\ programs\python\python38\include "-IC:\Program Files (x86)\Microsoft Visual Stud io 14.0\VC\INCLUDE" "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\AT LMFC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucr t" "-IC:\Program Files (x86)\Windows Kits\NETFXSDK\4.6.1\include\um" "-IC:\Progr am Files (x86)\Windows Kits\8.1\include\\shared" "-IC:\Program Files (x86)\Windo ws Kits\8.1\include\\um" "-IC:\Program Files (x86)\Windows Kits\8.1\include\\win rt" /Tcsrc/_portaudiomodule.c /Fobuild\temp.win-amd64-3.8\Release\src/_portaudio module.obj _portaudiomodule.c c:\users\administrator\appdata\local\programs\python\python38\include\pyconf ig.h(117): warning C4005: “MS_WIN64”: 宏重定义 c:\users\administrator\appdata\local\programs\python\python38\include\pyconf ig.h(117): note: 命令行参数: 参见前面的“MS_WIN64”定义 src/_portaudiomodule.c(29): fatal error C1083: 无法打开包括文件: “portaudio .h”: No such file or directory error: command 'C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\VC\\B IN\\x86_amd64\\cl.exe' failed with exit status 2 ---------------------------------------- Command "c:\users\administrator\appdata\local\programs\python\python38\python.ex e -u -c "import setuptools, tokenize;__file__='C:\\Users\\ADMINI~1\\AppData\\Loc al\\Temp\\pip-install-8s3mtmuj\\pyaudio\\setup.py';f=getattr(tokenize, 'open', o pen)(__file__);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, __file__, 'exec'))" install --record C:\Users\ADMINI~1\AppData\Local\Temp\pip-re cord-i5bb3diy\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\Users\ADMINI~1\AppData\Local\Temp\pip-install-8s3 mtmuj\pyaudio\ ```
求大神帮忙解决这个问题,紧急!!!马上就要交作业了。
我用VS2010写了一个音频播放器,编译的时候出现: 错误 1 error LNK2001: 无法解析的外部符号 "public: virtual long __thiscall CWnd::put_FileName(struct tagVARIANT,char)" (?put_FileName@CWnd@@UAEJUtagVARIANT@@D@Z) 请求大神们帮忙,明天就要交作业了,现在还没有弄好。下面是我的代码 // SoundPlayerDlg.h : 头文件 // #pragma once #include "afxwin.h" // CSoundPlayerDlg 对话框 class CSoundPlayerDlg : public CDialogEx { // 构造 public: CSoundPlayerDlg(CWnd* pParent = NULL); // 标准构造函数 // 对话框数据 enum { IDD = IDD_SOUNDPLAYER_DIALOG }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 实现 protected: HICON m_hIcon; BOOL m_bPlay;//是否在播放文件 BOOL m_bPause;//是否已经暂停播放文件 BOOL m_nIsCda;;//判断是否为播放CD文件 MCIDEVICEID m_MCIDeviceID; // 生成的消息映射函数 virtual BOOL OnInitDialog(); afx_msg void OnSysCommand(UINT nID, LPARAM lParam); afx_msg void OnPaint(); afx_msg HCURSOR OnQueryDragIcon(); DECLARE_MESSAGE_MAP() public: CButton m_ctlOpen; CButton m_ctlPlay; CButton m_ctlPause; CButton m_ctlStop; CString m_strFile; afx_msg void OnBnClickedOpen(); afx_msg void OnBnClickedPlay(); afx_msg void OnBnClickedPause(); afx_msg void OnBnClickedStop(); afx_msg void OnBnClickedOk(); afx_msg void OnEnChangeFile(); afx_msg void OnDestroy(); afx_msg LRESULT OnMciNotify(WPARAM wParam,LPARAM lParam); void ShowError(DWORD dwErroe); }; // SoundPlayerDlg.cpp : 实现文件 // #include "stdafx.h" #include "SoundPlayer.h" #include "SoundPlayerDlg.h" //#include "afxdialogex.h" //#include<MMSystem.h> #ifdef _DEBUG #define new DEBUG_NEW #endif //#define TRUE 1 // 用于应用程序“关于”菜单项的 CAboutDlg 对话框 class CAboutDlg : public CDialogEx { public: CAboutDlg(); // 对话框数据 enum { IDD = IDD_ABOUTBOX }; protected: virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持 // 实现 protected: DECLARE_MESSAGE_MAP() }; CAboutDlg::CAboutDlg() : CDialogEx(CAboutDlg::IDD) { } void CAboutDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); } BEGIN_MESSAGE_MAP(CAboutDlg, CDialogEx) END_MESSAGE_MAP() // CSoundPlayerDlg 对话框 CSoundPlayerDlg::CSoundPlayerDlg(CWnd* pParent /*=NULL*/) : CDialogEx(CSoundPlayerDlg::IDD, pParent), m_strFile(_T("")) { m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME); m_bPlay = FALSE; m_bPause = FALSE; m_nIsCda = 0; m_MCIDeviceID = 0; } void CSoundPlayerDlg::DoDataExchange(CDataExchange* pDX) { CDialogEx::DoDataExchange(pDX); DDX_Control(pDX, IDC_OPEN, m_ctlOpen); DDX_Control(pDX, IDC_PLAY, m_ctlPlay); DDX_Control(pDX, IDC_PAUSE, m_ctlPause); DDX_Control(pDX, IDC_STOP, m_ctlStop); DDX_Text(pDX, IDC_FILE, m_strFile); } BEGIN_MESSAGE_MAP(CSoundPlayerDlg, CDialogEx) ON_WM_SYSCOMMAND() ON_WM_PAINT() ON_WM_QUERYDRAGICON() ON_BN_CLICKED(IDC_OPEN, &CSoundPlayerDlg::OnBnClickedOpen) ON_BN_CLICKED(IDC_PLAY, &CSoundPlayerDlg::OnBnClickedPlay) ON_BN_CLICKED(IDC_PAUSE, &CSoundPlayerDlg::OnBnClickedPause) ON_BN_CLICKED(IDC_STOP, &CSoundPlayerDlg::OnBnClickedStop) ON_BN_CLICKED(IDOK, &CSoundPlayerDlg::OnBnClickedOk) ON_EN_CHANGE(IDC_FILE, &CSoundPlayerDlg::OnEnChangeFile) ON_WM_DESTROY() END_MESSAGE_MAP() // CSoundPlayerDlg 消息处理程序 BOOL CSoundPlayerDlg::OnInitDialog() { CDialogEx::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。 // IDM_ABOUTBOX 必须在系统命令范围内。 ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX); ASSERT(IDM_ABOUTBOX < 0xF000); CMenu* pSysMenu = GetSystemMenu(FALSE); if (pSysMenu != NULL) { BOOL bNameValid; CString strAboutMenu; bNameValid = strAboutMenu.LoadString(IDS_ABOUTBOX); ASSERT(bNameValid); if (!strAboutMenu.IsEmpty()) { pSysMenu->AppendMenu(MF_SEPARATOR); pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu); } } // 设置此对话框的图标。当应用程序主窗口不是对话框时,框架将自动 // 执行此操作 SetIcon(m_hIcon, TRUE); // 设置大图标 SetIcon(m_hIcon, FALSE); // 设置小图标 // TODO: 在此添加额外的初始化代码 m_ctlPlay.EnableWindow(FALSE);//将播放按钮禁止 m_ctlStop.EnableWindow(FALSE);//将停止按钮禁止 m_ctlPause.EnableWindow(FALSE);//将暂停按钮禁止 return TRUE; // 除非将焦点设置到控件,否则返回 TRUE } void CSoundPlayerDlg::OnSysCommand(UINT nID, LPARAM lParam) { if ((nID & 0xFFF0) == IDM_ABOUTBOX) { CAboutDlg dlgAbout; dlgAbout.DoModal(); } else { CDialogEx::OnSysCommand(nID, lParam); } } // 如果向对话框添加最小化按钮,则需要下面的代码 // 来绘制该图标。对于使用文档/视图模型的 MFC 应用程序, // 这将由框架自动完成。 void CSoundPlayerDlg::OnPaint() { if (IsIconic()) { CPaintDC dc(this); // 用于绘制的设备上下文 SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0); // 使图标在工作区矩形中居中 int cxIcon = GetSystemMetrics(SM_CXICON); int cyIcon = GetSystemMetrics(SM_CYICON); CRect rect; GetClientRect(&rect); int x = (rect.Width() - cxIcon + 1) / 2; int y = (rect.Height() - cyIcon + 1) / 2; // 绘制图标 dc.DrawIcon(x, y, m_hIcon); } else { CDialogEx::OnPaint(); } } //当用户拖动最小化窗口时系统调用此函数取得光标 //显示。 HCURSOR CSoundPlayerDlg::OnQueryDragIcon() { return static_cast<HCURSOR>(m_hIcon); } void CSoundPlayerDlg::OnBnClickedOpen() { // TODO: 在此添加控件通知处理程序代码 CString filename; CString str; MCI_OPEN_PARMS mciOpen; DWORD dwError; //打开选择文件对话框 static char szFilter[]="波形音频文件(*.wav)|*.wav|MIDI Audio File(*.mid)|*.mid|CD Audio(*.cda)|*.cda|所有文件(*.*)|*.*||"; CFileDialog dlg(TRUE,"wav",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,szFilter); if(dlg.DoModal()==IDOK) { filename=dlg.GetPathName();//得到文件名 str = filename.Right(3);//得到文件的扩展名 if(!strcmp(str,"wav"));//判断是否是wav文件 { mciOpen.lpstrDeviceType="waveaudio"; } if(!strcmp(str,"mid"));//判断是否是mid文件 { mciOpen.lpstrDeviceType="sequencer"; } if(!strcmp(str,"cda"));//判断是否是cda文件 { mciOpen.lpstrDeviceType="cdaudio"; m_nIsCda = 1; } m_strFile = filename; UpdateData(FALSE); mciOpen.lpstrElementName=filename;//设置打开文件 dwError = mciSendCommand(0,MCI_OPEN,MCI_OPEN_TYPE|MCI_OPEN_ELEMENT,(DWORD)(LPVOID)&mciOpen);//打开MCI设备 if(dwError) { ShowError(dwError); } m_MCIDeviceID = mciOpen.wDeviceID;//获得打开的MCI设备的ID m_ctlPlay.EnableWindow(TRUE); m_ctlStop.EnableWindow(TRUE); m_ctlPause.EnableWindow(TRUE); m_ctlOpen.EnableWindow(FALSE); m_bPlay = FALSE; m_bPause = FALSE; } } void CSoundPlayerDlg::OnBnClickedPlay() { // TODO: 在此添加控件通知处理程序代码 MCI_PLAY_PARMS mciPlay; DWORD dwError; if(!m_bPlay) { mciPlay.dwCallback= (long)GetSafeHwnd(); if(m_nIsCda==1) mciPlay.dwFrom=1; else mciPlay.dwFrom=0; dwError=mciSendCommand(m_MCIDeviceID,MCI_PLAY,MCI_FROM|MCI_NOTIFY,(DWORD)(LPVOID)&mciPlay); } if(m_bPlay) { if(m_bPause) { dwError=mciSendCommand(m_MCIDeviceID,MCI_RESUME,0,NULL); } m_bPause=!m_bPause; } if(dwError) { ShowError(dwError); } m_ctlPlay.EnableWindow(FALSE); m_ctlStop.EnableWindow(TRUE); m_ctlPause.EnableWindow(TRUE); m_ctlOpen.EnableWindow(FALSE); m_bPlay = TRUE; } void CSoundPlayerDlg::OnBnClickedPause() { // TODO: 在此添加控件通知处理程序代码 DWORD dwError; if(!m_bPause) { dwError=mciSendCommand(m_MCIDeviceID,MCI_PAUSE,0,NULL); if(dwError) { ShowError(dwError); } m_ctlPlay.EnableWindow(TRUE); m_ctlStop.EnableWindow(TRUE); m_ctlPause.EnableWindow(FALSE); m_ctlOpen.EnableWindow(FALSE); m_bPause=!m_bPause; } } void CSoundPlayerDlg::OnBnClickedStop() { // TODO: 在此添加控件通知处理程序代码 mciSendCommand(m_MCIDeviceID,MCI_STOP,MCI_WAIT,NULL); mciSendCommand(m_MCIDeviceID,MCI_CLOSE,MCI_WAIT,NULL); m_bPlay = FALSE ; m_bPause=FALSE; m_nIsCda = 0; m_ctlPlay.EnableWindow(FALSE); m_ctlStop.EnableWindow(FALSE); m_ctlPause.EnableWindow(FALSE); m_ctlOpen.EnableWindow(TRUE); } void CSoundPlayerDlg::OnBnClickedOk() { // TODO: 在此添加控件通知处理程序代码 CSoundPlayerDlg::OnDestroy(); CDialogEx::OnOK(); } void CSoundPlayerDlg::OnEnChangeFile() { // TODO: 如果该控件是 RICHEDIT 控件,它将不 // 发送此通知,除非重写 CDialogEx::OnInitDialog() // 函数并调用 CRichEditCtrl().SetEventMask(), // 同时将 ENM_CHANGE 标志“或”运算到掩码中。 // TODO: 在此添加控件通知处理程序代码 UpdateData(); m_ctlPlay.EnableWindow(m_strFile.GetLength()?TRUE:FALSE); } void CSoundPlayerDlg::OnDestroy() { CDialogEx::OnDestroy(); // TODO: 在此处添加消息处理程序代码 mciSendCommand(m_MCIDeviceID,MCI_STOP,MCI_WAIT,NULL);//停止播放 mciSendCommand(m_MCIDeviceID,MCI_CLOSE,MCI_WAIT,NULL);//关闭MCI设备 } LRESULT CSoundPlayerDlg::OnMciNotify(WPARAM wParam,LPARAM lParam) { if(wParam==MCI_NOTIFY_SUCCESSFUL) { m_bPlay=FALSE; m_bPause=FALSE; m_nIsCda=FALSE; return 0; } return -1; } void CSoundPlayerDlg::ShowError(DWORD dwError) { char szBuf[1000]; MessageBeep(MB_ICONEXCLAMATION); if(mciGetErrorString(dwError,(LPSTR)szBuf,MAXERRORLENGTH)) MessageBox(szBuf,"MCI错误",MB_ICONEXCLAMATION); else MessageBox("未知错误","MCI错误",MB_ICONEXCLAMATION); } // stdafx.h : 标准系统包含文件的包含文件, // 或是经常使用但不常更改的 // 特定于项目的包含文件 #pragma once #ifndef VC_EXTRALEAN #define VC_EXTRALEAN // 从 Windows 头中排除极少使用的资料 #endif #include "targetver.h" #define _ATL_CSTRING_EXPLICIT_CONSTRUCTORS // 某些 CString 构造函数将是显式的 // 关闭 MFC 对某些常见但经常可放心忽略的警告消息的隐藏 #define _AFX_ALL_WARNINGS #include <afxwin.h> // MFC 核心组件和标准组件 #include <afxext.h> // MFC 扩展 #include <afxdisp.h> // MFC 自动化类 #ifndef _AFX_NO_OLE_SUPPORT #include <afxdtctl.h> // MFC 对 Internet Explorer 4 公共控件的支持 #endif #ifndef _AFX_NO_AFXCMN_SUPPORT #include <afxcmn.h> // MFC 对 Windows 公共控件的支持 #endif // _AFX_NO_AFXCMN_SUPPORT #include <afxcontrolbars.h> // 功能区和控件条的 MFC 支持 #include<MMSystem.h> #pragma comment(lib,"winmm.lib") #ifdef _UNICODE #if defined _M_IX86 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='x86' publicKeyToken='6595b64144ccf1df' language='*'\"") #elif defined _M_X64 #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='amd64' publicKeyToken='6595b64144ccf1df' language='*'\"") #else #pragma comment(linker,"/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='*' publicKeyToken='6595b64144ccf1df' language='*'\"") #endif #endif
终于明白阿里百度这样的大公司,为什么面试经常拿ThreadLocal考验求职者了
点击上面↑「爱开发」关注我们每晚10点,捕获技术思考和创业资源洞察什么是ThreadLocalThreadLocal是一个本地线程副本变量工具类,各个线程都拥有一份线程私有的数
Java学习的正确打开方式
在博主认为,对于入门级学习java的最佳学习方法莫过于视频+博客+书籍+总结,前三者博主将淋漓尽致地挥毫于这篇博客文章中,至于总结在于个人,实际上越到后面你会发现学习的最好方式就是阅读参考官方文档其次就是国内的书籍,博客次之,这又是一个层次了,这里暂时不提后面再谈。博主将为各位入门java保驾护航,各位只管冲鸭!!!上天是公平的,只要不辜负时间,时间自然不会辜负你。 何谓学习?博主所理解的学习,它是一个过程,是一个不断累积、不断沉淀、不断总结、善于传达自己的个人见解以及乐于分享的过程。
程序员必须掌握的核心算法有哪些?
由于我之前一直强调数据结构以及算法学习的重要性,所以就有一些读者经常问我,数据结构与算法应该要学习到哪个程度呢?,说实话,这个问题我不知道要怎么回答你,主要取决于你想学习到哪些程度,不过针对这个问题,我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法。这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍。下面是我觉得值得学习的一些算法以及数据结构,当然,我也会整理一些看过
大学四年自学走来,这些私藏的实用工具/学习网站我贡献出来了
大学四年,看课本是不可能一直看课本的了,对于学习,特别是自学,善于搜索网上的一些资源来辅助,还是非常有必要的,下面我就把这几年私藏的各种资源,网站贡献出来给你们。主要有:电子书搜索、实用工具、在线视频学习网站、非视频学习网站、软件下载、面试/求职必备网站。 注意:文中提到的所有资源,文末我都给你整理好了,你们只管拿去,如果觉得不错,转发、分享就是最大的支持了。 一、电子书搜索 对于大部分程序员...
《奇巧淫技》系列-python!!每天早上八点自动发送天气预报邮件到QQ邮箱
此博客仅为我业余记录文章所用,发布到此,仅供网友阅读参考,如有侵权,请通知我,我会删掉。 补充 有不少读者留言说本文章没有用,因为天气预报直接打开手机就可以收到了,为何要多此一举发送到邮箱呢!!!那我在这里只能说:因为你没用,所以你没用!!! 这里主要介绍的是思路,不是天气预报!不是天气预报!!不是天气预报!!!天气预报只是用于举例。请各位不要再刚了!!! 下面是我会用到的两个场景: 每日下
Python 植物大战僵尸代码实现(2):植物卡片选择和种植
这篇文章要介绍的是: - 上方植物卡片栏的实现。 - 点击植物卡片,鼠标切换为植物图片。 - 鼠标移动时,判断当前在哪个方格中,并显示半透明的植物作为提示。
死磕YOLO系列,YOLOv1 的大脑、躯干和手脚
YOLO 是我非常喜欢的目标检测算法,堪称工业级的目标检测,能够达到实时的要求,它帮我解决了许多实际问题。 这就是 YOLO 的目标检测效果。它定位了图像中物体的位置,当然,也能预测物体的类别。 之前我有写博文介绍过它,但是每次重新读它的论文,我都有新的收获,为此我准备写一个系列的文章来详尽分析它。这是第一篇,从它的起始 YOLOv1 讲起。 YOLOv1 的论文地址:https://www.c
知乎高赞:中国有什么拿得出手的开源软件产品?(整理自本人原创回答)
知乎高赞:中国有什么拿得出手的开源软件产品? 在知乎上,有个问题问“中国有什么拿得出手的开源软件产品(在 GitHub 等社区受欢迎度较好的)?” 事实上,还不少呢~ 本人于2019.7.6进行了较为全面的 回答 - Bravo Yeung,获得该问题下回答中得最高赞(236赞和1枚专业勋章),对这些受欢迎的 Github 开源项目分类整理如下: 分布式计算、云平台相关工具类 1.SkyWalk
记一次腾讯面试:进程之间究竟有哪些通信方式?如何通信? ---- 告别死记硬背
有一次面试的时候,被问到进程之间有哪些通信方式,不过由于之前没深入思考且整理过,说的并不好。想必大家也都知道进程有哪些通信方式,可是我猜很多人都是靠着”背“来记忆的,所以今天的这篇文章,讲给大家详细着讲解他们是如何通信的,让大家尽量能够理解他们之间的区别、优缺点等,这样的话,以后面试官让你举例子,你也能够顺手拈来。 1、管道 我们来看一条 Linux 的语句 netstat -tulnp | gr...
20行Python代码爬取王者荣耀全英雄皮肤
引言 王者荣耀大家都玩过吧,没玩过的也应该听说过,作为时下最火的手机MOBA游戏,咳咳,好像跑题了。我们今天的重点是爬取王者荣耀所有英雄的所有皮肤,而且仅仅使用20行Python代码即可完成。 准备工作 爬取皮肤本身并不难,难点在于分析,我们首先得得到皮肤图片的url地址,话不多说,我们马上来到王者荣耀的官网: 我们点击英雄资料,然后随意地选择一位英雄,接着F12打开调试台,找到英雄原皮肤的图片
网络(8)-HTTP、Socket、TCP、UDP的区别和联系
TCP/IP协议是传输层协议,主要解决数据如何在网络中传输,而HTTP是应用层协议,主要解决如何包装数据。 一、TCP与UDP的不同 1. 是否需要建立连接。 UDP在传送数据之前不需要先建立连接;TCP则提供面向连接的服务; 2. 是否需要给出确认 对方的传输层在收到UDP报文后,不需要给出任何确认,而 TCP需要给出确认报文,要提供可靠的、面向连接的传输服务。 3.虽然UDP不提供可靠交...
简明易理解的@SpringBootApplication注解源码解析(包含面试提问)
欢迎关注文章系列 ,关注我 《提升能力,涨薪可待》 《面试知识,工作可待》 《实战演练,拒绝996》 欢迎关注我博客,原创技术文章第一时间推出 也欢迎关注公 众 号【Ccww笔记】,同时推出 如果此文对你有帮助、喜欢的话,那就点个赞呗,点个关注呗! 《提升能力,涨薪可待篇》- @SpringBootApplication注解源码解析 一、@SpringBootApplication 的作用是什
防劝退!数据结构和算法难理解?可视化动画带你轻松透彻理解!
大家好,我是 Rocky0429,一个连数据结构和算法都不会的蒟蒻… 学过数据结构和算法的都知道这玩意儿不好学,没学过的经常听到这样的说法还没学就觉得难,其实难吗?真难! 难在哪呢?当年我还是个小蒟蒻,初学数据结构和算法的时候,在忍着枯燥看完定义原理,之后想实现的时候,觉得它们的过程真的是七拐八绕,及其难受。 在简单的链表、栈和队列这些我还能靠着在草稿上写写画画理解过程,但是到了数论、图...
西游记团队中如果需要裁掉一个人,会先裁掉谁?
2019年互联网寒冬,大批企业开始裁员,下图是网上流传的一张截图: 裁员不可避免,那如何才能做到不管大环境如何变化,自身不受影响呢? 我们先来看一个有意思的故事,如果西游记取经团队需要裁员一名,会裁掉谁呢,为什么? 西游记团队组成: 1.唐僧 作为团队teamleader,有很坚韧的品性和极高的原则性,不达目的不罢休,遇到任何问题,都没有退缩过,又很得上司支持和赏识(直接得到唐太宗的任命,既给
开挂的人生!那些当选院士,又是ACM/IEEE 双料Fellow的华人学者们
昨日,2019年两院院士正式官宣,一时间抢占了各大媒体头条。 朋友圈也是一片沸腾,奔走相告,赶脚比自己中了大奖还嗨皮! 谁叫咱家导师就是这么厉害呢!!! 而就在最近,新一年度的IEEE/ACM Fellow也将正式公布。 作为学术届的顶级荣誉,不自然地就会将院士与Fellow作比较,到底哪个含金量更高呢? 学术君认为,同样是专业机构对学者的认可,考量标准不一,自然不能一概而论。 但...
聊聊C语言和指针的本质
坐着绿皮车上海到杭州,24块钱,很宽敞,在火车上非正式地聊几句。 很多编程语言都以 “没有指针” 作为自己的优势来宣传,然而,对于C语言,指针却是与生俱来的。 那么,什么是指针,为什么大家都想避开指针。 很简单, 指针就是地址,当一个地址作为一个变量存在时,它就被叫做指针,该变量的类型,自然就是指针类型。 指针的作用就是,给出一个指针,取出该指针指向地址处的值。为了理解本质,我们从计算机模型说起...
Python语言高频重点汇总
Python语言高频重点汇总 GitHub面试宝典仓库——点这里跳转 文章目录Python语言高频重点汇总**GitHub面试宝典仓库——点这里跳转**1. 函数-传参2. 元类3. @staticmethod和@classmethod两个装饰器4. 类属性和实例属性5. Python的自省6. 列表、集合、字典推导式7. Python中单下划线和双下划线8. 格式化字符串中的%和format9.
究竟你适不适合买Mac?
我清晰的记得,刚买的macbook pro回到家,开机后第一件事情,就是上了淘宝网,花了500元钱,找了一个上门维修电脑的师傅,上门给我装了一个windows系统。。。。。。 表砍我。。。 当时买mac的初衷,只是想要个固态硬盘的笔记本,用来运行一些复杂的扑克软件。而看了当时所有的SSD笔记本后,最终决定,还是买个好(xiong)看(da)的。 已经有好几个朋友问我mba怎么样了,所以今天尽量客观
代码详解:如何用Python快速制作美观、炫酷且有深度的图表
全文共12231字,预计学习时长35分钟生活阶梯(幸福指数)与人均GDP(金钱)正相关的正则图本文将探讨三种用Python可视化数据的不同方法。以可视化《2019年世界幸福报告》的数据为例,本文用Gapminder和Wikipedia的信息丰富了《世界幸福报告》数据,以探索新的数据关系和可视化方法。《世界幸福报告》试图回答世界范围内影响幸福的因素。报告根据对“坎特里尔阶梯问题”的回答来确定幸...
程序员一般通过什么途径接私活?
二哥,你好,我想知道一般程序猿都如何接私活,我也想接,能告诉我一些方法吗? 上面是一个读者“烦不烦”问我的一个问题。其实不止是“烦不烦”,还有很多读者问过我类似这样的问题。 我接的私活不算多,挣到的钱也没有多少,加起来不到 20W。说实话,这个数目说出来我是有点心虚的,毕竟太少了,大家轻喷。但我想,恰好配得上“一般程序员”这个称号啊。毕竟苍蝇再小也是肉,我也算是有经验的人了。 唾弃接私活、做外
(经验分享)作为一名普通本科计算机专业学生,我大学四年到底走了多少弯路
今年正式步入了大四,离毕业也只剩半年多的时间,回想一下大学四年,感觉自己走了不少弯路,今天就来分享一下自己大学的学习经历,也希望其他人能不要走我走错的路。 (一)初进校园 刚进入大学的时候自己完全就相信了高中老师的话:“进入大学你们就轻松了”。因此在大一的时候自己学习的激情早就被抛地一干二净,每天不是在寝室里玩游戏就是出门游玩,不过好在自己大学时买的第一台笔记本性能并不是很好,也没让我彻底沉...
如何写一篇技术博客,谈谈我的看法
前言 只有光头才能变强。 文本已收录至我的GitHub精选文章,欢迎Star:https://github.com/ZhongFuCheng3y/3y 我一直推崇学技术可以写技术博客去沉淀自己的知识,因为知识点实在是太多太多了,通过自己的博客可以帮助自己快速回顾自己学过的东西。 我最开始的时候也是只记笔记,认为自己能看得懂就好。但如果想验证自己是不是懂了,可以写成技术博客。在写技术博客的...
字节跳动面试官这样问消息队列:分布式事务、重复消费、顺序消费,我整理了一下
你知道的越多,你不知道的越多 点赞再看,养成习惯 GitHub上已经开源 https://github.com/JavaFamily 有一线大厂面试点脑图、个人联系方式和人才交流群,欢迎Star和完善 前言 消息队列在互联网技术存储方面使用如此广泛,几乎所有的后端技术面试官都要在消息队列的使用和原理方面对小伙伴们进行360°的刁难。 作为一个在互联网公司面一次拿一次Offer的面霸...
面试还搞不懂redis,快看看这40道面试题(含答案和思维导图)
Redis 面试题 1、什么是 Redis?. 2、Redis 的数据类型? 3、使用 Redis 有哪些好处? 4、Redis 相比 Memcached 有哪些优势? 5、Memcache 与 Redis 的区别都有哪些? 6、Redis 是单进程单线程的? 7、一个字符串类型的值能存储最大容量是多少? 8、Redis 的持久化机制是什么?各自的优缺点? 9、Redis 常见性...
大学四年自学走来,这些珍藏的「实用工具/学习网站」我全贡献出来了
知乎高赞:文中列举了互联网一线大厂程序员都在用的工具集合,涉及面非常广,小白和老手都可以进来看看,或许有新收获。
互联网公司的裁员,能玩出多少种花样?
裁员,也是一门学问,可谓博大精深!以下,是互联网公司的裁员的多种方法:-正文开始-135岁+不予续签的理由:千禧一代网感更强。95后不予通过试用期的理由:已婚已育员工更有责任心。2通知接下来要过苦日子,让一部分不肯同甘共苦的员工自己走人,以“兄弟”和“非兄弟”来区别员工。3强制996。员工如果平衡不了工作和家庭,可在离婚或离职里二选一。4不布置任何工作,但下班前必须提交千字工作日报。5不给活干+...
【设计模式】单例模式的八种写法分析
网上泛滥流传单例模式的写法种类,有说7种的,也有说6种的,当然也不排除说5种的,他们说的有错吗?其实没有对与错,刨根问底,写法终究是写法,其本质精髓大体一致!因此完全没必要去追究写法的多少,有这个时间还不如跟着宜春去网吧偷耳机、去田里抓青蛙得了,一天天的....
《面试宝典》:检验是否为合格的初中级程序员的面试知识点,你都知道了吗?查漏补缺
欢迎关注文章系列,一起学习 《提升能力,涨薪可待篇》 《面试知识,工作可待篇》 《实战演练,拒绝996篇》 也欢迎关注公 众 号【Ccww笔记】,原创技术文章第一时间推出 如果此文对你有帮助、喜欢的话,那就点个赞呗,点个关注呗! 《面试知识,工作可待篇》-Java笔试面试基础知识大全 前言 是不是感觉找工作面试是那么难呢? 在找工作面试应在学习的基础进行总结面试知识点,工作也指日可待,欢...
关于研发效能提升的思考
研发效能提升是最近比较热门的一个话题,本人根据这几年的工作心得,做了一些思考总结,由于个人深度有限,暂且抛转引入。 三要素 任何生产力的提升都离不开这三个因素:人、流程和工具,少了其中任何一个因素都无法实现。 人,即思想,也就是古人说的“道”,道不同不相为谋,是制高点,也是高层建筑的基石。 流程,即方法,也是古人说的“法”。研发效能的提升,也就是要提高投入产出比,既要增加产出,也要减...
微博推荐算法简述
在介绍微博推荐算法之前,我们先聊一聊推荐系统和推荐算法。有这样一些问题:推荐系统适用哪些场景?用来解决什么问题、具有怎样的价值?效果如何衡量? 推荐系统诞生很早,但真正被大家所重视,缘起于以”facebook”为代表的社会化网络的兴起和以“淘宝“为代表的电商的繁荣,”选择“的时代已经来临,信息和物品的极大丰富,让用户如浩瀚宇宙中的小点,无所适从。推荐系统迎来爆发的机会,变得离用户更近: 快...
GitHub 标星 1.6w+,我发现了一个宝藏项目,作为编程新手有福了!
大家好,我是 Rocky0429,一个最近老在 GitHub 上闲逛的蒟蒻… 特别惭愧的是,虽然我很早就知道 GitHub,但是学会逛 GitHub 的时间特别晚。当时一方面是因为菜,看着这种全是英文的东西难受,不知道该怎么去玩,另一方面是一直在搞 ACM,没有做一些工程类的项目,所以想当然的以为和 GitHub 也没什么关系(当然这种想法是错误的)。 后来自己花了一个星期看完了 Pyt...
Python爬虫爬取淘宝,京东商品信息
小编是一个理科生,不善长说一些废话。简单介绍下原理然后直接上代码。 使用的工具(Python+pycharm2019.3+selenium+xpath+chromedriver)其中要使用pycharm也可以私聊我selenium是一个框架可以通过pip下载 pip install selenium -i https://pypi.tuna.tsinghua.edu.cn/simple/ 
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和完善,大家面试可以参照考点复习,希望我们一起有点东西。 前前言 为啥今天有个前前言呢? 因为你们的丙丙啊,昨天有牌面了哟,直接被微信官方推荐,知乎推荐,也就仅仅是还行吧(心里乐开花)
Java工作4年来应聘要16K最后没要,细节如下。。。
前奏: 今天2B哥和大家分享一位前几天面试的一位应聘者,工作4年26岁,统招本科。 以下就是他的简历和面试情况。 基本情况: 专业技能: 1、&nbsp;熟悉Sping了解SpringMVC、SpringBoot、Mybatis等框架、了解SpringCloud微服务 2、&nbsp;熟悉常用项目管理工具:SVN、GIT、MAVEN、Jenkins 3、&nbsp;熟悉Nginx、tomca
恕我直言,牛逼哄哄的MongoDB你可能只会30%
MongoDB 闪亮登场自我介绍MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于...
一文带你看清 HTTP 所有概念
上一篇文章我们大致讲解了一下 HTTP 的基本特征和使用,大家反响很不错,那么本篇文章我们就来深究一下 HTTP 的特性。我们接着上篇文章没有说完的 HTTP 标头继续来介绍(此篇文章会介绍所有标头的概念,但没有深入底层) HTTP 标头 先来回顾一下 HTTP1.1 标头都有哪几种 HTTP 1.1 的标头主要分为四种,通用标头、实体标头、请求标头、响应标头,现在我们来对这几种标头进行介绍 通用...
作为一个程序员,CPU的这些硬核知识你必须会!
CPU对每个程序员来说,是个既熟悉又陌生的东西? 如果你只知道CPU是中央处理器的话,那可能对你并没有什么用,那么作为程序员的我们,必须要搞懂的就是CPU这家伙是如何运行的,尤其要搞懂它里面的寄存器是怎么一回事,因为这将让你从底层明白程序的运行机制。 随我一起,来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说,我们首先就要搞明白它是怎么回事,也就是它的内部构造,当然,CPU那么牛的一个东
破14亿,Python分析我国存在哪些人口危机!
2020年1月17日,国家统计局发布了2019年国民经济报告,报告中指出我国人口突破14亿。 猪哥的朋友圈被14亿人口刷屏,但是很多人并没有看到我国复杂的人口问题:老龄化、男女比例失衡、生育率下降、人口红利下降等。 今天我们就来分析一下我们国家的人口数据吧! 更多有趣分析教程,扫描下方二维码关注vx公号「裸睡的猪」 即可查看! 一、背景 1.人口突破14亿 2020年1月17日,国家统计局发布
web前端javascript+jquery知识点总结
Javascript javascript 在前端网页中占有非常重要的地位,可以用于验证表单,制作特效等功能,它是一种描述语言,也是一种基于对象(Object)和事件驱动并具有安全性的脚本语言 ,语法同java类似,是一种解释性语言,边执行边解释。 JavaScript的组成: ECMAScipt 用于描述: 语法,变量和数据类型,运算符,逻辑控制语句,关键字保留字,对象。 浏览器对象模型(Br
在家远程办公效率低?那你一定要收好这个「在家办公」神器!
相信大家都已经收到国务院延长春节假期的消息,接下来,在家远程办公可能将会持续一段时间。 但是问题来了。远程办公不是人在电脑前就当坐班了,相反,对于沟通效率,文件协作,以及信息安全都有着极高的要求。有着非常多的挑战,比如: 1在异地互相不见面的会议上,如何提高沟通效率? 2文件之间的来往反馈如何做到及时性?如何保证信息安全? 3如何规划安排每天工作,以及如何进行成果验收? ......
相关热词 c#导入fbx c#中屏蔽键盘某个键 c#正态概率密度 c#和数据库登陆界面设计 c# 高斯消去法 c# codedom c#读取cad文件文本 c# 控制全局鼠标移动 c# temp 目录 bytes初始化 c#
立即提问