关于C++ #ifdef __WIN32__的问题

请问这个的作用是使程序能在Windows下运行的意思是
1、在windows下能编译运行
2、在Linux下编译的程序能在windows下运行
3、在Linux下编译的程序在Linux下运行,windows程序与之通信,或其他
4、或者其他,请说明,谢谢!!!

2个回答

windows的宏定义,答案:1

u014132751
Xiao学生丶 感谢!
2 年多之前 回复

像这种问题,一般考虑跨平台的时候在CMakeList里用的很多,实际上是用来判断编译的环境,然后生成对应的makefile,然后再根据makefile来生成可执
行文件或者s库

u014132751
Xiao学生丶 感谢!
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
关于C++ #ifdef __WIN32__的问题
请问这个的作用是使程序能在Windows下运行的意思是 1、在windows下能编译运行 2、在Linux下编译的程序能在windows下运行 3、在Linux下编译的程序在Linux下运行,windows程序与之通信,或其他 4、或者其他,请说明,谢谢!!!
VS C+++编译预处理问题
编译平台:vs2015 update3,代码如下: #ifdef _WIN64 1. inline uint16_t zBSF(unsigned long * Index,uint64_t x) 2. { 3. return _BitScanForward64(Index,x); 4. } #endif 在编译目标平台选项设为x64的时候没有问题,但是设为x86的时候,第三行报错,错误信息如下: Error C3861 '_BitScanForward64': identifier not found 我已经做了#ifdef _WIN64预处理了,指示预编译在x86下不要处理这段代码了啊,怎么感觉好像编译器不予理睬一般。这种预处理,我在其他地方用的很多,没有出现过什么问题。这个_BitScanForward64按微软说法是编译器内嵌函数,但是这又如何?指明了不要处理,为啥还处理,头痛失眠,求大神指点 不好意思,囊中空空,没有C币悬赏了啊
Lib编译和使用的问题,帮忙解释一下,谢谢!
#include <Windows.h> #include <stdio.h> #include "..\\Win32_Lib\\lib.h" #pragma comment(lib,"..\\Debug\\Win32_Lib.lib") int main(int argc, char *argv[]) { printf("Hello Word!--[%d]\n",MyAdd(1,2)); return 0; } **运行后老是提示:error C3861: 'MyAdd': identifier not found** Lib: #include "stdafx.h" #define _MyLib_OWNER //这个一定要在lib.h之前,原因就是展开内容先代替 #include "lib.h" MY_LIB_API int MyAdd(int a ,int b) { __asm { mov eax,eax; mov eax,eax; } return (a+b); } lib.h #ifdef _MyLib_OWNER #define MY_LIB_API extern "C" __declspec(dllexport) #else #define MY_LIB_API extern "C" __declspec(dllimport) #endif int MyAdd();
c++/CLR dll调用问题(一个很神奇的问题,望解答)
目前遇到一个很奇怪的问题。 创建控制台程序CLR console application ,添加该dll和lib(工程属性中添加lib目录及名称,dll放到dedug文件夹下),编译通过,完全没有问题 创建windows Forms application,用同样方法添加dll和lib,编译出错,出错地方就是调用的dll函数不成功。 dll代码如下 //h文件 #if !defined(_FTDCTRADERAPI_H) #define _FTDCTRADERAPI_H #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "ThostFtdcUserApiStruct.h" #if defined(ISLIB) && defined(WIN32) #ifdef LIB_TRADER_API_EXPORT #define TRADER_API_EXPORT __declspec(dllexport) #else #define TRADER_API_EXPORT __declspec(dllimport) #endif #else #define TRADER_API_EXPORT #endif class TRADER_API_EXPORT CThostFtdcTraderApi { public: static CThostFtdcTraderApi *CreateFtdcTraderApi(const char *pszFlowPath = ""); }; 控制台程序,成功运行 #include "stdafx.h" #include ".\ThostTraderApi\ThostFtdcTraderApi.h" using namespace System; int main(array<System::String ^> ^args) { CThostFtdcTraderApi* aa=CThostFtdcTraderApi::CreateFtdcTraderApi(); return 0; } winform程序 // 2.cpp : main project file. #include "stdafx.h" #include "Form1.h" #include ".\ThostTraderApi\ThostFtdcTraderApi.h" using namespace My2; [STAThreadAttribute] int main(array<System::String ^> ^args) { // Enabling Windows XP visual effects before any controls are created Application::EnableVisualStyles(); Application::SetCompatibleTextRenderingDefault(false); CThostFtdcTraderApi* aa=CThostFtdcTraderApi::CreateFtdcTraderApi(); // Create the main window and run it Application::Run(gcnew Form1()); return 0; } 报错 error LNK2028: unresolved token (0A00000F) "public: static class CThostFtdcTraderApi * __clrcall CThostFtdcTraderApi::CreateFtdcTraderApi(char const *)" (?CreateFtdcTraderApi@CThostFtdcTraderApi@@$$FSMPAV1@PBD@Z) referenced in function "int __clrcall main(cli::array<class System::String ^ >^)" (?main@@$$HYMHP$01AP$AAVString@System@@@Z)我尝试去掉该lib会出现同样的错误,即在winform下调用失败了 产生了两个问题: 1、如何才能在winform下成功调用该lib和dll 2、个人猜想其调用失败是不是h头文件没有说明,即该段 #if !defined(_FTDCTRADERAPI_H) #define _FTDCTRADERAPI_H #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "ThostFtdcUserApiStruct.h" #if defined(ISLIB) && defined(WIN32) #ifdef LIB_TRADER_API_EXPORT #define TRADER_API_EXPORT __declspec(dllexport) #else #define TRADER_API_EXPORT __declspec(dllimport) #endif #else #define TRADER_API_EXPORT #endif 如何更改? 3、我尝试建立了win32,MFC工程,均能成功编译。这个到底是怎么回事,求高手解答。
添加利用Svchost启动的dll服务,无法启动怎么解决?
添加一个利用Svchost启动的DLL共享服务,在注册表已成功添加,但在服务界面就是启动不起来,会报错126:找不到指定模块。 ![图片说明](https://img-ask.csdn.net/upload/201909/23/1569227274_167077.png)![图片说明](https://img-ask.csdn.net/upload/201909/23/1569227368_277597.png) ![图片说明](https://img-ask.csdn.net/upload/201909/23/1569227412_149725.png) 查了很多说该错误是因为dll文件有问题,有没有大佬帮忙看一下dll文件错在哪? dllmain.cpp: ![图片说明](https://img-ask.csdn.net/upload/201909/23/1569227627_961704.png) service.h: ``` #pragma once #include "stdafx.h" #ifdef __cplusplus extern "C" { #endif __declspec(dllexport) VOID WINAPI ServiceMain(DWORD dwArgc, LPCTSTR* lpszArgv); #ifdef __cplusplus } #endif ``` service.cpp: ``` #include "service.h" #include "stdafx.h" SERVICE_STATUS_HANDLE g_service_status_handle = NULL; SERVICE_STATUS g_service_status = { SERVICE_WIN32_SHARE_PROCESS, SERVICE_START_PENDING, SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN | SERVICE_ACCEPT_PAUSE_CONTINUE }; DWORD WINAPI ServiceHandler(DWORD dwControl, DWORD dwEventType, LPVOID lpEventData, LPVOID lpContext) { switch (dwControl) { case SERVICE_CONTROL_STOP: case SERVICE_CONTROL_SHUTDOWN: g_service_status.dwCurrentState = SERVICE_STOPPED; break; case SERVICE_CONTROL_PAUSE: g_service_status.dwCurrentState = SERVICE_PAUSED; break; case SERVICE_CONTROL_CONTINUE: g_service_status.dwCurrentState = SERVICE_RUNNING; break; case SERVICE_CONTROL_INTERROGATE: break; default: break; }; SetServiceStatus(g_service_status_handle, &g_service_status); return NO_ERROR; } extern "C" __declspec(dllexport) VOID WINAPI ServiceMain(DWORD dwArgc, LPCTSTR* lpszArgv) { g_service_status_handle = RegisterServiceCtrlHandlerEx(TEXT("Svchost Service"), ServiceHandler, NULL); if (!g_service_status_handle) { return; } g_service_status.dwCurrentState = SERVICE_RUNNING; SetServiceStatus(g_service_status_handle, &g_service_status); while (TRUE) { Sleep(1000); OutputDebugString(TEXT("Hello Topsec In Svchost")); } return; }; ```
请大神帮我解决这个c/c++麻烦,谢谢!
//一下代码是一个窗口显示界面,我想弄懂这个代码,然后删除第一个窗口,改一改窗口和按钮的布局,就这样了,谢谢大神啊 //Microsoft Developer Studio generated resource script. // #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "afxres.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Chinese (中国) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS) #ifdef _WIN32 LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED #pragma code_page(936) #endif //_WIN32 #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE DISCARDABLE BEGIN "resource.h\0" END 2 TEXTINCLUDE DISCARDABLE BEGIN "#include ""afxres.h""\r\n" "\0" END 3 TEXTINCLUDE DISCARDABLE BEGIN "#define _AFX_NO_SPLITTER_RESOURCES\r\n" "#define _AFX_NO_OLE_RESOURCES\r\n" "#define _AFX_NO_TRACKER_RESOURCES\r\n" "#define _AFX_NO_PROPERTY_RESOURCES\r\n" "\r\n" "#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)\r\n" "#ifdef _WIN32\r\n" "LANGUAGE 4, 2\r\n" "#pragma code_page(936)\r\n" "#endif //_WIN32\r\n" "#include ""res\\Medical3D.rc2"" // non-Microsoft Visual C++ edited resources\r\n" "#include ""l.chs\\afxres.rc"" // Standard components\r\n" "#endif\r\n" "\0" END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Icon // // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. //IDR_MAINFRAME ICON DISCARDABLE "res\\Medical3D.ico" ///////////////////////////////////////////////////////////////////////////// // // Dialog // IDD_MEDICAL3D_DIALOG DIALOGEX 0, 0, 443, 370 STYLE DS_MODALFRAME | WS_MINIMIZEBOX | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU EXSTYLE WS_EX_APPWINDOW CAPTION "Medical3D" FONT 9, "微软雅黑" BEGIN LTEXT "",IDC_SurfaceRender,7,6,186,176,0,WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE LTEXT "",IDC_VolumeRender,201,5,186,176,0,WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE LTEXT "",IDC_ImageShow,7,189,186,176,0,WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE LTEXT "",IDC_ImageWedget,200,189,186,176,0,WS_EX_DLGMODALFRAME | WS_EX_CLIENTEDGE PUSHBUTTON "面绘制",IDC_BUTTON1,393,269,36,15,0,WS_EX_STATICEDGE PUSHBUTTON "体绘制",IDC_BUTTON2,393,292,36,15,0,WS_EX_STATICEDGE PUSHBUTTON "图像显示",IDC_BUTTON3,393,315,36,15,0,WS_EX_STATICEDGE PUSHBUTTON "切片显示",IDC_BUTTON4,393,338,36,15,0,WS_EX_STATICEDGE END #ifndef _MAC ///////////////////////////////////////////////////////////////////////////// // // Version // VS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,0,1 PRODUCTVERSION 1,0,0,1 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x4L FILETYPE 0x1L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "080404B0" BEGIN VALUE "CompanyName", "\0" VALUE "FileDescription", "Medical3D Microsoft 基础类应用程序\0" VALUE "FileVersion", "1, 0, 0, 1\0" VALUE "InternalName", "Medical3D\0" VALUE "LegalCopyright", "版权所有 (C) 2007\0" VALUE "LegalTrademarks", "\0" VALUE "OriginalFilename", "Medical3D.EXE\0" VALUE "ProductName", "Medical3D 应用程序\0" VALUE "ProductVersion", "1, 0, 0, 1\0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x804, 1200 END END #endif // !_MAC ///////////////////////////////////////////////////////////////////////////// // // DESIGNINFO // #ifdef APSTUDIO_INVOKED GUIDELINES DESIGNINFO DISCARDABLE BEGIN IDD_MEDICAL3D_DIALOG, DIALOG BEGIN RIGHTMARGIN, 437 BOTTOMMARGIN, 365 END END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // String Table // STRINGTABLE DISCARDABLE BEGIN IDS_ABOUTBOX "关于 Medical3D(&A)..." END #endif // Chinese (中国) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // #define _AFX_NO_SPLITTER_RESOURCES #define _AFX_NO_OLE_RESOURCES #define _AFX_NO_TRACKER_RESOURCES #define _AFX_NO_PROPERTY_RESOURCES #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS) #ifdef _WIN32 LANGUAGE 4, 2 #pragma code_page(936) #endif //_WIN32 //#include "res\Medical3D.rc2" // non-Microsoft Visual C++ edited resources #include "l.chs\afxres.rc" // Standard components #endif ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED
C语言图书管理系统中出现的问题
该系统是采用了细分各个功能模块,分别在main.c文件中调用。 开发环境是Win7,Netbeans8.0.2 这是main.c #include <stdio.h> #include <string.h> #include <stdlib.h> #include "bmenu.h" #include "search_allinformation.h" typedef struct bookinfo { char num[20]; /*图书编号*/ char name[40]; /*书名*/ char author[40]; /*作者*/ char publish [40]; /*出版社*/ double price; /*价格*/ } bi[40]; int w = 0; /*定义一个全局变量,用来记录bookinfo.txt文件中的数据个数*/ int main() { int i = 0; int choice1; FILE *fp; printf(" * ****************************** *\n"); printf(" * 欢迎进入图书馆信息管理系统 *\n"); printf(" * ****************************** *\n"); fp = fopen("E:\\BookInfo.txt", "r"); if (fp == NULL) { printf("Can not open the file !\n"); exit(0); } while (!feof(fp)) { fscanf(fp, "%s%s%s%s%lf", /*调用函数将文件中的数据读入结构变量中*/ &bi[i].num,&bi[i].name,&bi[i].author, &bi[i].publish, &bi[i].price); i++; } w = i - 1; fclose(fp); do { bmenu(); scanf("%d", &choice1); switch (choice1) { case 1: search_allinformation(bookinfo &bi); break; case 2: check_bookinformation(b); break; case 3: add_bookinformation(b); break; case 4: delete_bookinformation(b); break; case 5: borrow_book(b); break; case 0: break; } } while (choice1 != 0); printf("谢谢使用!\n"); return 0; } 这是bmenu.c #include <stdio.h> void bmenu() { printf("################################################################################"); printf(" 功能选项: \n"); printf(" 1:查看全部图书信息 \n"); printf(" 2:查找图书信息 \n"); printf(" 3:添加图书信息 \n"); printf(" 4:删除图书信息 \n"); printf(" 5:借阅图书 \n"); printf(" 0:退出系统 \n"); printf("################################################################################"); printf("请选择操作:"); } 这是bmenu.h #ifndef BMENU_H #define BMENU_H #ifdef __cplusplus extern "C" { #endif void bmenu(); #ifdef __cplusplus } #endif #endif /* BMENU_H */ 这是search_allinformation.c #include <stdio.h> typedef struct list { char num[20]; /*图书编号*/ char name[40]; /*书名*/ char author[40]; /*作者*/ char publish [40]; /*出版社*/ double price; /*价格*/ }; struct list b[40]; void search_allinformation(struct list b[],int w) { int i; int m = w; printf(" ####################################\n"); printf(" # 查看全部图书信息! #\n"); printf(" ####################################\n"); printf("图书的相关信息: 编号 书名 作者 出版社 价格\n"); for (i = 0; i < m; i++) { printf(" %s %s %s %s %.2f\n", /*将数据输出到屏幕中*/ b[i].num, b[i].name, b[i].author, b[i].publish, b[i].price); } printf("################################################################################\n"); } 这是search_allinformation.h #ifndef SEARCH_ALLINFORMATION_H #define SEARCH_ALLINFORMATION_H #ifdef __cplusplus extern "C" { #endif typedef struct list { char num[20]; /*图书编号*/ char name[40]; /*书名*/ char author[40]; /*作者*/ char publish [40]; /*出版社*/ double price; /*价格*/ }; struct list b[40]; void search_allinformation(struct list b[]); #ifdef __cplusplus } #endif #endif /* SEARCH_ALLINFORMATION_H */ 出现的问题如下:
(OpenGL)0xC0000005: 执行位置 0x0000000000000000 时发生访问冲突,运行glBindBuffer函数时崩溃。
1.运行一个OpenGL/CUDA相结合的样例程序,main.cpp编译成功。运行可执行文件时图形界面无法成功运行,调试过程中显示在glBindBuffer函数处程序报错。 2.main.cpp代码: ``` #include "kernel.h" #include <stdio.h> #include <stdlib.h> #ifdef _WIN32 #define WINDOWS_LEAN_AND_MEAN #define NOMINMAX #include <windows.h> #endif #ifdef __APPLE__ #include<GLUT/glut.h> #else #include <GL/glew.h> #include <GL/freeglut.h> #endif #include <cuda_runtime.h> #include <cuda_gl_interop.h> #include "interactions.h" //texture and pixel objects GLuint pbo = 0;//OpenGL pixel buffer object GLuint tex = 0;//OpenGL texture object struct cudaGraphicsResource *cuda_pbo_resource; void render() { uchar4 *d_out = 0; cudaGraphicsMapResources(1, &cuda_pbo_resource, 0); cudaGraphicsResourceGetMappedPointer((void**)&d_out, NULL, cuda_pbo_resource); kernelLauncher(d_out,W, H, loc); cudaGraphicsUnmapResources(1, &cuda_pbo_resource, 0); } void drawTexture() { glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, W, H, 0, GL_RGBA,GL_UNSIGNED_BYTE,NULL); glEnable(GL_TEXTURE_2D); glBegin(GL_QUADS); glTexCoord2f(0.0f, 0.0f); glVertex2f(0, 0); glTexCoord2f(0.0f, 1.0f); glVertex2f(0, H); glTexCoord2f(1.0f, 1.0f); glVertex2f(W, H); glTexCoord2f(1.0f, 0.0f); glVertex2f(W, 0); glEnd(); glDisable(GL_TEXTURE_2D); } void display() { render(); drawTexture(); glutSwapBuffers(); } void initGLUT(int *argc, char** argv) { glutInit(argc, argv); glutInitDisplayMode(GLUT_RGBA | GLUT_DOUBLE); glutInitWindowSize(W,H); glutCreateWindow(TITLE_STRING); #ifdef __APPLE__ glewInit(); #endif } void initPixelBuffer() { GLuint pbo = 0; glGenBuffers(1, &pbo); glBindBuffer(GL_PIXEL_UNPACK_BUFFER, pbo); glBufferData(GL_PIXEL_UNPACK_BUFFER, 4 * W * H * sizeof(GLubyte), 0, GL_STREAM_DRAW); GLuint tex = 0; glGenTextures(1, &tex); glBindTexture(GL_TEXTURE_2D, tex); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); cudaGraphicsGLRegisterBuffer(&cuda_pbo_resource, pbo, cudaGraphicsMapFlagsWriteDiscard); } void exitfunc() { if (pbo) { cudaGraphicsUnregisterResource(cuda_pbo_resource); glDeleteBuffers(1, &pbo); glDeleteTextures(1, &tex); } } int main(int argc,char** argv) { printInstructions(); initGLUT(&argc, argv); gluOrtho2D(0, W, H, 0); glutKeyboardFunc(keyboard); glutSpecialFunc(handleSpecialKeypress); glutPassiveMotionFunc(mouseMove); glutMotionFunc(mouseDrag); glutDisplayFunc(display); initPixelBuffer(); glutMainLoop(); atexit(exitfunc); return 0; } ``` 3.报错信息:0x0000000000000000 处(位于 dist_2d_cuda.exe 中)引发的异常: 0xC0000005: 执行位置 0x0000000000000000 时发生访问冲突。 请问具体是什么问题呢,向各位求助~
解码出的pcm有问题,我要怎么修改增加代码?
#include <stdio.h> #include <stdlib.h> #include <string.h> #define __STDC_CONSTANT_MACROS #ifdef _WIN32 //Windows extern "C" { #include "libavcodec/avcodec.h" #include "libavformat/avformat.h" #include "libswresample/swresample.h" }; #else //Linux... #ifdef __cplusplus extern "C" { #endif #include <libavcodec/avcodec.h> #include <libavformat/avformat.h> #include <libswresample/swresample.h> #ifdef __cplusplus }; #endif #endif #define MAX_AUDIO_FRAME_SIZE 192000 // 1 second of 48khz 32bit audio int main(int argc, char* argv[]) { AVFormatContext *pFormatCtx; int i, audioStream; AVCodecContext *pCodecCtx; AVCodec *pCodec; AVPacket *packet; uint8_t *out_buffer; AVFrame *pFrame; int ret; uint32_t len = 0; int got_picture; int index = 0; int64_t in_channel_layout; struct SwrContext *au_convert_ctx; FILE *pFile=fopen("output.pcm", "wb"); char url[]="output.aac"; av_register_all(); avformat_network_init(); pFormatCtx = avformat_alloc_context(); //Open if(avformat_open_input(&pFormatCtx,url,NULL,NULL)!=0){ printf("Couldn't open input stream.\n"); return -1; } // Retrieve stream information if(avformat_find_stream_info(pFormatCtx,NULL)<0){ printf("Couldn't find stream information.\n"); return -1; } // Dump valid information onto standard error av_dump_format(pFormatCtx, 0, url, false); // Find the first audio stream audioStream=-1; for(i=0; i < pFormatCtx->nb_streams; i++) if(pFormatCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_AUDIO){ audioStream=i; break; } if(audioStream==-1){ printf("Didn't find a audio stream.\n"); return -1; } // Get a pointer to the codec context for the audio stream pCodecCtx=pFormatCtx->streams[audioStream]->codec; // Find the decoder for the audio stream pCodec=avcodec_find_decoder(pCodecCtx->codec_id); if(pCodec==NULL){ printf("Codec not found.\n"); return -1; } // Open codec if(avcodec_open2(pCodecCtx, pCodec,NULL)<0){ printf("Could not open codec.\n"); return -1; } packet=(AVPacket *)av_malloc(sizeof(AVPacket)); av_init_packet(packet); //Out Audio Param uint64_t out_channel_layout=AV_CH_LAYOUT_STEREO; //nb_samples: AAC-1024 MP3-1152 int out_nb_samples=pCodecCtx->frame_size; AVSampleFormat out_sample_fmt=AV_SAMPLE_FMT_S16; int out_sample_rate=44100; int out_channels=av_get_channel_layout_nb_channels(out_channel_layout); //Out Buffer Size int out_buffer_size=av_samples_get_buffer_size(NULL,out_channels ,out_nb_samples,out_sample_fmt, 1); out_buffer=(uint8_t *)av_malloc(MAX_AUDIO_FRAME_SIZE*2); pFrame=av_frame_alloc(); //FIX:Some Codec's Context Information is missing in_channel_layout=av_get_default_channel_layout(pCodecCtx->channels); //Swr au_convert_ctx = swr_alloc(); au_convert_ctx=swr_alloc_set_opts(au_convert_ctx,out_channel_layout, out_sample_fmt, out_sample_rate, in_channel_layout,pCodecCtx->sample_fmt , pCodecCtx->sample_rate,0, NULL); swr_init(au_convert_ctx); while(av_read_frame(pFormatCtx, packet)>=0){ if(packet->stream_index==audioStream){ ret = avcodec_decode_audio4( pCodecCtx, pFrame,&got_picture, packet); if ( ret < 0 ) { printf("Error in decoding audio frame.\n"); return -1; } if ( got_picture > 0 ){ swr_convert(au_convert_ctx,&out_buffer, MAX_AUDIO_FRAME_SIZE,(const uint8_t **)pFrame->data , pFrame->nb_samples); printf("index:%5d\t pts:%lld\t packet size:%d\n",index,packet->pts,packet->size); //Write PCM fwrite(out_buffer, 1, out_buffer_size, pFile); index++; } } av_free_packet(packet); } swr_free(&au_convert_ctx); fclose(pFile); av_free(out_buffer); // Close the codec avcodec_close(pCodecCtx); // Close the video file avformat_close_input(&pFormatCtx); return 0; }
VS2015 编译预处理问题
VS C+++编译预处理问题 微软 编译器 编译平台:vs2015 update3,代码如下: #ifdef _WIN64 inline uint16_t zBSF(unsigned long * Index,uint64_t x) { return _BitScanForward64(Index,x); //编译报错行 } #endif 在编译目标平台选项设为x64的时候没有问题,但是设为x86的时候,报错,错误信息如下: Error C3861 '_BitScanForward64': identifier not found 我已经做了#ifdef _WIN64预处理了,指示预编译在x86下不要处理这段代码了啊,怎么感觉好像编译器不予理睬一般。这种预处理,我在其他地方用的很多,没有出现过什么问题。这个_BitScanForward64按微软说法是编译器内嵌函数,但是这又如何?指明了不要处理,为啥还处理,跪求求大神指点 不好意思,囊中空空,没有C币悬赏了啊 编译命令行所有选项: /GS /analyze- /W3 /Zc:wchar_t /ZI /Gm /Od /sdl /Fd"Debug\vc140.pdb" /Zc:inline /fp:precise /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /errorReport:prompt /WX- /Zc:forScope /RTC1 /Gd /Oy- /MDd /Fa"Debug\" /EHsc /nologo /Fo"Debug\" /Fp"Debug\CPPTEST.pch" 链接命令行所有选项: /OUT:"D:\VS\CPPTEST\Debug\CPPTEST.exe" /MANIFEST /NXCOMPAT /PDB:"D:\VS\CPPTEST\Debug\CPPTEST.pdb" /DYNAMICBASE "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /DEBUG /MACHINE:X86 /INCREMENTAL /PGD:"D:\VS\CPPTEST\Debug\CPPTEST.pgd" /SUBSYSTEM:CONSOLE /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /ManifestFile:"Debug\CPPTEST.exe.intermediate.manifest" /ERRORREPORT:PROMPT /NOLOGO /TLBID:1
__declspec(dllexport)
问题和代码如下(问题在代码中有标注) #ifndef rcs_id_api_h #define rcs_id_api_h #if !defined(lint) static char* doors_ers_rcs_id_api_h = (char*)"@(#)DOORS %full_filespec: api.h~8.1.4:incl:ERS#1 % %date_created: Tue Jul 16 15:41:59 2013 %"; #endif #endif /********************************************************************** ** api.h */ /* Licensed Materials - Property of IBM - some unique copyrights (i.e., the ability to copy, modify, distribute) may be licensed in certain circumstances (e.g., sample/template code intended to be used by customers to build upon and distribute as their own products). DOORS - %full_filespec: api.h~8.1.4:incl:ERS#1 % %date_created: Tue Jul 16 15:41:59 2013 % (c) Copyright IBM Corporation 1993, 2008. All Rights Reserved. U.S. Government Users Restricted Rights: Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ #ifndef DOORS_API_H #define DOORS_API_H /* Required to build Serena Version Manager */ #ifndef NLS_ #define NLS_(a)a #endif /* Type seperation for 64 vs 32 bit variant */ #if defined (_WIN64) # if defined (datum) # undef datum # endif # define datum long long #else # if defined (datum) # undef datum # endif # define datum long #endif /* Categorize the type of C/C++ we are using */ #if defined(__cplusplus) || defined(c_plusplus) #define API_CPLUSPLUS 1 #else #define API_CPLUSPLUS 0 #endif #if defined(__STDC__) || API_CPLUSPLUS || defined(_WIN32) #define API_ARGS(args) args #else #define API_ARGS(args) () #endif /********************************************************************** ** Some typical CPP definitions */ #ifndef TRUE #define TRUE 1 #define FALSE 0 #endif #ifndef global #define global /* global entry point (extern in .h file) */ #define local static /* local entry point */ #define globalvar /* global variable (externvar .in .h file) */ #define externvar extern /* global variable .h file entry */ #endif #if defined(_WIN32) #define API_WIN32 #ifndef API_DLL #define API_DLL _declspec(dllexport) 编译的时候总在提示在(dllexport)前面那个括号出少了构造函数和析构函数,求大神指教 #define API_CALL _stdcall #endif #define API_EXTERN(type) API_DLL type API_CALL #define API_EXTERNVAR API_DLL #else #define API_EXTERN(type) extern type #define API_EXTERNVAR externvar #endif #ifndef NULL #define NULL 0 #endif #ifndef NUL #define NUL '\0' #endif /* heap things */ #ifndef mnew #define mnew(Type) (Type*)malloc(sizeof(Type)) #define msave(Str) strcpy((char *)malloc(qss_strlen(Str)+1), (Str)) #define mnew_array(Type, Num) (Type*)malloc(sizeof(Type)*(Num)) #endif /* miscellaneous */ #ifndef M_Min #define M_Min(a, b) ((a) < (b) ? (a) : (b)) #define M_Max(a, b) ((a) > (b) ? (a) : (b)) #define M_Abs(a) ((a) < 0 ? -(a) : (a)) #define M_Xor(a, b) (((a) || (b)) && ( ! ((a) && (b)))) #endif /* Macro token concatenation */ #ifndef CAT_ #define ID_(x) x #ifdef __STDC__ #define CAT_(x,y) x ## y #else #define CAT_(x,y) ID_(x)y #endif #endif #ifndef StrMP_ #if defined (__STDC__) || defined(API_WIN32) #define StrMP_(x) (char *)#x #else #define StrMP_(x) (char *)NLS_("x") #endif #endif /* API Stuff */ /* Error States */ /* * CL58 - had to reintroduce apiErrorStates typedef, * because api.h is included by C (not C++) code which * uses apiErrorStates as a type name. */ enum apiErrorStates_ { DOORS_API_OK, DOORS_API_PARSE_BAD_DXL, DOORS_API_SEND_BAD_DXL, DOORS_API_CONNECT_FAILED, DOORS_API_ERROR }; typedef enum apiErrorStates_ apiErrorStates; #define apiInstall(proto,fn) apiInstallN(proto,StrMP_(fn),fn) #define BEGIN_FN(name,ins,outs) \ local int name API_ARGS((void)) { \ char* name__ = StrMP_(name); \ int inp_i_ = ins; \ int outp_i_ = ins; \ int inn_i_ = ins; \ int outn_i_ = outs; #define END_DECLS \ if (apiParCheck(name__,inn_i_,outn_i_,inp_i_)) ; else goto err_exit__ #define END_FN \ err_exit__: \ apiResCheck(name__,inp_i_,inn_i_,outp_i_,outn_i_); \ return (outn_i_ - inn_i_); } #define P_(t,x) \ t x = (t)apiPar(inp_i_--) #define RETURN_(x) \ apiReturn((datum)x,outp_i_--); /* for loop perm macros */ #define BEGIN_FOR_DO(name,ft,f,st,scan) \ local int name (char *pc) \ { \ char* loop; \ int irv = 0; \ st* scanp__; \ ft f; \ st scan; \ scanp__ = (st*)apiLoop(pc,&loop,(void **)&f,&irv); \ if (scanp__ == NULL) return irv; \ { #define PROCESS_DO(scan) \ {*scanp__ = scan;\ if (apiLoopBody(loop,&irv)) break;} #define END_FOR_DO \ } \ return apiLoopDone(loop,irv,pc); \ } /* Definitions */ #if API_CPLUSPLUS extern NLS_("C") { #endif API_EXTERN(void) apiError API_ARGS((char *format, ...)); API_EXTERN(void) apiWarn API_ARGS((char *format, ...)); API_EXTERN(int) apiParCheck API_ARGS((char *n, int ins, int outs, int ip)); API_EXTERN(void) apiResCheck API_ARGS((char *n, int ip, int in, int op, int on)); API_EXTERN(datum) apiPar API_ARGS((int ip)); API_EXTERN(void) apiReturn API_ARGS((long r, int op)); API_EXTERN(char*) apiLoop API_ARGS((char* pc, char** loop, void** fp, int* ret)); API_EXTERN(int) apiLoopBody API_ARGS((char* loop, int* irvp)); API_EXTERN(int) apiLoopDone API_ARGS((char* loop, int irv, char* pp)); API_EXTERN(void) apiMainProg API_ARGS((int argc, char* argv[], char* n, char* ext, char* include, void (*init)(void), void (*done)(void))); API_EXTERN(void) apiInitLibrary API_ARGS((char* n, char* ext, char* include)); API_EXTERN(void) apiFinishLibrary API_ARGS((void)); API_EXTERN(void) apiInstallN API_ARGS((char* proto, char* name, int (*)())); API_EXTERN(void) apiParse API_ARGS((char *format, ...)); API_EXTERN(void) apiConnect API_ARGS((char *s)); API_EXTERN(void) apiConnectSock API_ARGS((unsigned short portno, char* host)); API_EXTERN(void) apiConnectSockV2 API_ARGS((unsigned short portno, char* host)); API_EXTERN(void) apiSend API_ARGS((char *format, ...)); API_EXTERN(void) apiAuthenticatedSend API_ARGS((char *response, char *format, ...)); API_EXTERN(void) apiSendTimesout API_ARGS((int tmt, char *format, ...)); API_EXTERN(void) apiSendFile API_ARGS((char* f)); API_EXTERN(void) apiExitOnError API_ARGS((int onoff)); API_EXTERN(void) apiQuietError API_ARGS((int onoff)); API_EXTERN(int) apiGetErrorState API_ARGS((void)); API_EXTERN(void*) apiGetIPC API_ARGS((void)); API_EXTERN(int) apiSetIPC API_ARGS((void* newIPC)); API_EXTERN(void) apiDeleteIPC API_ARGS((void* newIPC)); API_EXTERN(void) apiFree API_ARGS((void*)); API_EXTERN(char*) apiAuthenticate API_ARGS((void)); #if API_CPLUSPLUS } #endif #endif /* DOORS_API_H */ ``` ```
未处理的异常,Cannot find or open the PDB file,访问冲突
问题 “Geometry.exe”: 已加载“E:\opencascade\OpenCASCADE6.9.0\opencascade-6.9.0\samples\mfc\standard\win64\vc10\bind\Geometry.exe”,已加载符号。 “Geometry.exe”: 已加载“C:\Windows\System32\ntdll.dll”,Cannot find or open the PDB file “Geometry.exe”: 已加载“C:\Windows\System32\kernel32.dll”,Cannot find or open the PDB file “Geometry.exe”: 已加载“C:\Windows\System32\KernelBase.dll”,Cannot find or open the PDB file “Geometry.exe”: 已加载“E:\opencascade\OpenCASCADE6.9.0\occdll\TKBRep.dll”,未使用调试信息生成二进制文件。 “Geometry.exe”: 已加载“E:\opencascade\OpenCASCADE6.9.0\occdll\TKMath.dll”,未使用调试信息生成二进制文件。 “Geometry.exe”: 已加载“E:\opencascade\OpenCASCADE6.9.0\occdll\TKernel.dll”,未使用调试信息生成二进制文件。 “Geometry.exe”: 已加载“C:\Windows\System32\advapi32.dll”,Cannot find or open the PDB file “Geometry.exe”: 已加载“C:\Windows\System32\msvcrt.dll”,Cannot find or open the PDB file “Geometry.exe”: 已加载“C:\Windows\System32\sechost.dll”,Cannot find or open the PDB file “Geometry.exe”: 已加载“C:\Windows\System32\rpcrt4.dll”,Cannot find or open the PDB file “Geometry.exe”: 已加载“C:\Windows\System32\user32.dll”,Cannot find or open the PDB file “Geometry.exe”: 已加载“C:\Windows\System32\gdi32.dll”,Cannot find or open the PDB file “Geometry.exe”: 已加载“C:\Windows\System32\lpk.dll”,Cannot find or open the PDB file “Geometry.exe”: 已加载“C:\Windows\System32\usp10.dll”,Cannot find or open the PDB file 原程序 // This is a part of the Microsoft Foundation Classes C++ library. // Copyright (C) 1992-1995 Microsoft Corporation // All rights reserved. // // This source code is only intended as a supplement to the // Microsoft Foundation Classes Reference and related // electronic documentation provided with the library. // See these sources for detailed information regarding the // Microsoft Foundation Classes product. #include "stdafx.h" #include <Standard_ErrorHandler.hxx> #include <Standard_SStream.hxx> #include <Standard_Failure.hxx> #include <Message.hxx> #include <Message_Messenger.hxx> #include <Message_PrinterOStream.hxx> #ifdef AFX_CORE1_SEG #pragma code_seg(AFX_CORE1_SEG) #endif ///////////////////////////////////////////////////////////////////////////// // Standard WinMain implementation // Can be replaced as long as 'AfxWinInit' is called first // for cout redefinition : #include <io.h> // for _open_osfhandle #include <fcntl.h> // for _O_TEXT #ifdef _DEBUG #define DISPLAYCONSOLE 1 #endif int AFXAPI AfxWinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow) { #ifdef DISPLAYCONSOLE // Redirection of standard output to console int hCrt; BOOL rep; FILE *hf; _SYSTEM_INFO lps; GetSystemInfo(&lps); rep = AllocConsole(); hCrt = _open_osfhandle((long) GetStdHandle(STD_OUTPUT_HANDLE),_O_TEXT); hf = _fdopen( hCrt, "w" ); *stdout = *hf; // stop the buffer on stdout // int i = setvbuf( stdout, NULL, _IONBF, 0 ); // filebuf ff(hCrt); // cout = &ff; cout<<"This Debug Window is defined in WinMain.cpp and will disappear in release mode"<<endl; #endif // DISPLAYCONSOLE // By Matra // create log file for all OCC messages // Message::DefaultMessenger()->AddPrinter (new Message_PrinterOStream ("OCCSampleRun.log", Standard_False)); ASSERT(hPrevInstance == NULL); int nReturnCode = -1; CWinApp* pApp = AfxGetApp(); // new in 2.0 CAS.CADE uses the standard C++ exception mechanism /*#ifdef _DEBUG // By Matra // _Function declaratiob here because you can jump to InitFailure Standard_ErrorHandler _Function; #endif // _DEBUG // By Matra */ // AFX internal initialization if (!AfxWinInit(hInstance, hPrevInstance, lpCmdLine, nCmdShow)) goto InitFailure; // App global initializations (rare) ASSERT_VALID(pApp); if (!pApp->InitApplication()) goto InitFailure; ASSERT_VALID(pApp); // Perform specific initializations if (!pApp->InitInstance()) { if (pApp->m_pMainWnd != NULL) { TRACE0("Warning: Destroying non-NULL m_pMainWnd\n"); pApp->m_pMainWnd->DestroyWindow(); } nReturnCode = pApp->ExitInstance(); goto InitFailure; } ASSERT_VALID(pApp); #ifdef _DEBUG // By Matra Application: // new in 2.0 CAS.CADE uses the standard C++ exception mechanism // if(DoesNotAbort(_Function)) try { nReturnCode = pApp->Run(); } // if(_Function.Catches(STANDARD_TYPE(Standard_Failure))) catch(Standard_Failure) { Standard_SStream ostr; ostr<<Standard_Failure::Caught()<<"\n\0"; CString aMsg = ostr.str().c_str(); MessageBoxW (NULL, aMsg, L"CasCade Error", MB_ICONERROR); goto Application; // restart application loop } #else // _DEBUG // By Matra nReturnCode = pApp->Run(); #endif // _DEBUG // By Matra ASSERT_VALID(pApp); InitFailure: #ifdef _DEBUG // Check for missing AfxLockTempMap calls if (AfxGetModuleThreadState()->m_nTempMapLock != 0) { TRACE1("Warning: Temp map lock count non-zero (%ld).\n", AfxGetModuleThreadState()->m_nTempMapLock); } AfxLockTempMaps(); AfxUnlockTempMaps(); #endif AfxWinTerm(); #ifdef DISPLAYCONSOLE // By Matra // ferme la console pour le cout fclose( stdout ); //hCrt = _fcloseall(); :-) rep = FreeConsole(); #endif // DISPLAYCONSOLE // By Matra return nReturnCode; } /////////////////////////////////////////////////////////////////////////////
关于MD5算法(C版)!我自己写的!超过2G校验失败
考虑到平台的兼容性,所以代码有点冗长,刚完成,2G以上的文件无法校验,所以,性能也没有优化,代码也没有整理,求大神指点迷津,为什么检验2G以上的文件会出错? ``` #include<stdio.h> #include<string.h> #include<malloc.h> #ifdef _WIN32 #include<windows.h> #endif //the program can't get right result; //MD5.h #ifdef uint64 #undef uint64 #define uint64 unsigned long long #else #define uint64 unsigned long long #endif #ifdef uint32 #undef uint32 #define uint32 unsigned int #else #define uint32 unsigned int #endif #ifdef uchar #undef uchar #define uchar unsigned char #else #define uchar unsigned char #endif //when you write a Macro,you should be care for bracket,because of Operation sequence #ifdef crol #undef crol #define crol(temp,s) ((temp<<s)|(temp>>(0x20-s))) #else #define crol(temp,s) ((temp<<s)|(temp>>(0x20-s))) #endif #define F(X,Y,Z) ((X&Y)|((~X)&Z)) #define G(X,Y,Z) ((X&Z)|(Y&(~Z))) #define H(X,Y,Z) (X^Y^Z) #define I(X,Y,Z) (Y^(X|(~Z))) #define FF(a,b,c,d,Mj,s,ti) a=b+(crol((a+F(b,c,d)+Mj+ti),s)) #define GG(a,b,c,d,Mj,s,ti) a=b+(crol((a+G(b,c,d)+Mj+ti),s)) #define HH(a,b,c,d,Mj,s,ti) a=b+(crol((a+H(b,c,d)+Mj+ti),s)) #define II(a,b,c,d,Mj,s,ti) a=b+(crol((a+I(b,c,d)+Mj+ti),s)) #define A 0x67452301 #define B 0xefcdab89 #define C 0x98badcfe #define D 0x10325476 #define BIT 8 #define BLOCK_SIZE 512 #define MOD_SIZE_BT 448 #define MOD_SIZE_BY MOD_SIZE_BT/BIT #define FIRST_APPEND_BYTE 0x80 #define FILE_LEN 8 #define BLOCK_BYTE 64 typedef struct File_Info { bool Get_Len; FILE *File_Point; uint64 Info_Len, Info_Mod, Info_Size, Info_Div; }FILE_POINT, *PFILE_POINT; FILE_POINT File_S; uint32 State[4] = { 0 }; uchar Ciphertext_32[16]; inline void Init_Info(); void MD5(char *Msg); bool Init(char *Msg, char Type); uint32 *Block_Sort(char *Info); void GetMd5(char *Info, char); uint64 Get_File_Len_Linux_Windows(char *filename); #ifdef _WIN32 LPCTSTR Multi_To_Wide(char * Old_Name); #endif //MD5.c #ifdef _WIN32 LPCTSTR Multi_To_Wide(char * Old_Name) { int num = MultiByteToWideChar(0, 0, Old_Name, -1, NULL, 0); LPTSTR Now_Name = (LPTSTR)malloc(sizeof(wchar_t)*num); MultiByteToWideChar(0, 0, Old_Name, -1, Now_Name, num); return Now_Name; } #endif uint64 Get_File_Len_Linux_Windows(char *filename) { #ifdef __linux int i; struct stat statbuf; if ((i = stat(Msg, &statbuf)) == 0) { File_S.Get_Len = true; return statbuf.st_size; } else{ File_S.Get_Len = false; } #endif #ifdef _WIN32 uint64 File_Len = 0x0; LPCTSTR Win_filename; DWORD High, Low; WIN32_FIND_DATA wfd = { 0 }; Win_filename = Multi_To_Wide(filename); HANDLE hFile = FindFirstFile(Win_filename, &wfd); if (hFile != NULL) { Low = wfd.nFileSizeLow; High = wfd.nFileSizeHigh; File_Len = Low | ((File_Len = High) << 32); File_S.Get_Len = true; } else File_S.Get_Len = false; FindClose(hFile); return File_Len; #endif } inline void Init_Info() { File_S.Info_Div = (File_S.Info_Len*BIT) / BLOCK_SIZE; File_S.Info_Mod = (File_S.Info_Len*BIT) % BLOCK_SIZE; File_S.Info_Size = File_S.Info_Len*BIT; } bool Init(char *Msg, char Type) { State[0] = A; State[1] = B; State[2] = C; State[3] = D; if (Type == 'M') { File_S.File_Point = NULL; File_S.Info_Len = strlen(Msg); Init_Info(); return true; } else if (Type == 'F') { File_S.File_Point = fopen(Msg, "rb"); File_S.Info_Len = Get_File_Len_Linux_Windows(Msg); if (File_S.Get_Len == false) return false; Init_Info(); return true; } else return false; } uint32 *Block_Sort(char *Info) { static uint32 Num[16] = { 0 }; int i; for (i = 0; i<16; i++) { memmove(&Num[i], &Info[i * 4], 4); } return Num; } void MD5(char *Msg)//只需要传入512位 { uint32 *M, a, b, c, d; M = Block_Sort(Msg); a = State[0]; b = State[1]; c = State[2]; d = State[3]; FF(a, b, c, d, M[0], 7, 0xd76aa478); FF(d, a, b, c, M[1], 12, 0xe8c7b756); FF(c, d, a, b, M[2], 17, 0x242070db); FF(b, c, d, a, M[3], 22, 0xc1bdceee); FF(a, b, c, d, M[4], 7, 0xf57c0faf); FF(d, a, b, c, M[5], 12, 0x4787c62a); FF(c, d, a, b, M[6], 17, 0xa8304613); FF(b, c, d, a, M[7], 22, 0xfd469501); FF(a, b, c, d, M[8], 7, 0x698098d8); FF(d, a, b, c, M[9], 12, 0x8b44f7af); FF(c, d, a, b, M[10], 17, 0xffff5bb1); FF(b, c, d, a, M[11], 22, 0x895cd7be); FF(a, b, c, d, M[12], 7, 0x6b901122); FF(d, a, b, c, M[13], 12, 0xfd987193); FF(c, d, a, b, M[14], 17, 0xa679438e); FF(b, c, d, a, M[15], 22, 0x49b40821); GG(a, b, c, d, M[1], 5, 0xf61e2562); GG(d, a, b, c, M[6], 9, 0xc040b340); GG(c, d, a, b, M[11], 14, 0x265e5a51); GG(b, c, d, a, M[0], 20, 0xe9b6c7aa); GG(a, b, c, d, M[5], 5, 0xd62f105d); GG(d, a, b, c, M[10], 9, 0x2441453); GG(c, d, a, b, M[15], 14, 0xd8a1e681); GG(b, c, d, a, M[4], 20, 0xe7d3fbc8); GG(a, b, c, d, M[9], 5, 0x21e1cde6); GG(d, a, b, c, M[14], 9, 0xc33707d6); GG(c, d, a, b, M[3], 14, 0xf4d50d87); GG(b, c, d, a, M[8], 20, 0x455a14ed); GG(a, b, c, d, M[13], 5, 0xa9e3e905); GG(d, a, b, c, M[2], 9, 0xfcefa3f8); GG(c, d, a, b, M[7], 14, 0x676f02d9); GG(b, c, d, a, M[12], 20, 0x8d2a4c8a); HH(a, b, c, d, M[5], 4, 0xfffa3942); HH(d, a, b, c, M[8], 11, 0x8771f681); HH(c, d, a, b, M[11], 16, 0x6d9d6122); HH(b, c, d, a, M[14], 23, 0xfde5380c); HH(a, b, c, d, M[1], 4, 0xa4beea44); HH(d, a, b, c, M[4], 11, 0x4bdecfa9); HH(c, d, a, b, M[7], 16, 0xf6bb4b60); HH(b, c, d, a, M[10], 23, 0xbebfbc70); HH(a, b, c, d, M[13], 4, 0x289b7ec6); HH(d, a, b, c, M[0], 11, 0xeaa127fa); HH(c, d, a, b, M[3], 16, 0xd4ef3085); HH(b, c, d, a, M[6], 23, 0x4881d05); HH(a, b, c, d, M[9], 4, 0xd9d4d039); HH(d, a, b, c, M[12], 11, 0xe6db99e5); HH(c, d, a, b, M[15], 16, 0x1fa27cf8); HH(b, c, d, a, M[2], 23, 0xc4ac5665); II(a, b, c, d, M[0], 6, 0xf4292244); II(d, a, b, c, M[7], 10, 0x432aff97); II(c, d, a, b, M[14], 15, 0xab9423a7); II(b, c, d, a, M[5], 21, 0xfc93a039); II(a, b, c, d, M[12], 6, 0x655b59c3); II(d, a, b, c, M[3], 10, 0x8f0ccc92); II(c, d, a, b, M[10], 15, 0xffeff47d); II(b, c, d, a, M[1], 21, 0x85845dd1); II(a, b, c, d, M[8], 6, 0x6fa87e4f); II(d, a, b, c, M[15], 10, 0xfe2ce6e0); II(c, d, a, b, M[6], 15, 0xa3014314); II(b, c, d, a, M[13], 21, 0x4e0811a1); II(a, b, c, d, M[4], 6, 0xf7537e82); II(d, a, b, c, M[11], 10, 0xbd3af235); II(c, d, a, b, M[2], 15, 0x2ad7d2bb); II(b, c, d, a, M[9], 21, 0xeb86d391); State[0] += a; State[1] += b; State[2] += c; State[3] += d; } void GetMd5(char *Info, char Type = 'M')// { int i; char *Data_Temp = (char*)malloc(BLOCK_BYTE); char *Temp = (char*)malloc(BLOCK_BYTE); if (Init(Info, Type)) { for (i = 0; i <= File_S.Info_Div + 1; i++) { memset(Data_Temp, 0x0, BLOCK_BYTE); memset(Temp, 0x0, BLOCK_BYTE); if (Type == 'F') { fread(Temp, 4, 16, File_S.File_Point); } else{ strncpy(Temp, &Info[i*BLOCK_BYTE], File_S.Info_Len);//strncpy,memmove,src不够长直接接着地址往下读,但是memmove全部读,strncpy,读指定字节只读0x0之前的 } if (File_S.Info_Mod<448){ if (i == File_S.Info_Div) { memmove(Data_Temp, Temp, BLOCK_BYTE); memmove(&Data_Temp[BLOCK_BYTE - FILE_LEN], &File_S.Info_Size, FILE_LEN); Data_Temp[File_S.Info_Mod / BIT] = FIRST_APPEND_BYTE; goto Do_5; } if (i == File_S.Info_Div + 1) goto End; } else{ if (i == File_S.Info_Div + 1) { memmove(&Data_Temp[BLOCK_BYTE - FILE_LEN], &File_S.Info_Size, FILE_LEN); goto Do_5; } else if (i == File_S.Info_Div) { memmove(Data_Temp, Temp, BLOCK_BYTE); Data_Temp[File_S.Info_Mod / BIT] = FIRST_APPEND_BYTE; goto Do_5; } } memmove(Data_Temp, Temp, BLOCK_BYTE); Do_5: MD5(Data_Temp); End:; } } free(Data_Temp); free(Temp); } int main()//文件太大时,时间长且结果错误,需优化算法<2G左右计算OK { char *p = "E:\\Test_.exe"; GetMd5(p, 'F');//完全版,p可以是字符串,也可以是文件名,main函数自己写,F代表file,M代表字符串 int i; for (i = 0; i<16; i++) { Ciphertext_32[i] = (State[i / 4] >> (i % 4) * 8) & 0xff; } printf("32BIT:"); for (i = 0; i < 16; i++) { printf("%02x", Ciphertext_32[i]); } printf("\n16BIT:"); for (i = 4; i < 12; i++) { printf("%02x", Ciphertext_32[i]); } getchar(); } ```
python调用c++函数时怎样传入const char*型的参数?
python代码: ``` ``` import ctypes so = ctypes.cdll.LoadLibrary lib = so("./build/liblandmark.so") path = "/face/360p/1.jpg" lib.landmark(1,ctypes.c_char_p(path)) ``` ``` c++代码: #include <cstdint> #include <fstream> #include <iostream> #include <string> #include "cv.h" #include "highgui.h" #include "face_detection.h" #include "face_alignment.h" #ifdef _WIN32 std::string DATA_DIR = "../../data/"; std::string MODEL_DIR = "../../model/"; #else std::string DATA_DIR = "./data/"; std::string MODEL_DIR = "./model/"; #endif extern "C" { seeta::FacialLandmark landmark(int argc, char*argv) { // Initialize face detection model seeta::FaceDetection detector("./build/seeta_fd_frontal_v1.0.bin"); detector.SetMinFaceSize(40); detector.SetScoreThresh(2.f); detector.SetImagePyramidScaleFactor(0.8f); detector.SetWindowStep(4, 4); // Initialize face alignment model seeta::FaceAlignment point_detector((MODEL_DIR + "seeta_fa_v1.1.bin").c_str()); //load image const char* img_path = argv; IplImage *img_grayscale = NULL; img_grayscale = cvLoadImage(img_path, 0); IplImage *img_color = cvLoadImage(img_path,1); int pts_num = 5; int im_width = img_grayscale->width; int im_height = img_grayscale->height; ``` ``` 这里的 const char* img_path 传不进去,应该怎么办。尝试过static_cast强制转换类型,将传入c++的char*类型的数据通过static_cast转换为const char* 但还是不行
在VS2010中使用WinHttp和Java搭建的Web平台通信时出现问题
在VS2010中通过WinHttp和Java搭建的Web平台通信时出现一个很怪异的问题:当我直接建立一个win32 console的工程时,进行通信没有问题,但当我把原来代码放在一个新建的头文件中时,然后将这个头文件添加入MFC工程,然后在所需要这个头文件的地方包含这个头文件,编译时出现了以下问题: ``` 错误error C2371: “HTTP_VERSION_INFO”: 重定义;不同的基类型 c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp.h ,错误error C2371: “HTTP_VERSION_INFO”: 重定义;不同的基类型 c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp.h ,错误error C2371: “URL_COMPONENTS”: 重定义;不同的基类型 c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp.h 160,错误error C2371: “HTTP_VERSION_INFO”: 重定义;不同的基类型 c:\program files (x86)\microsoft sdks\windows\v7.0a\include\winhttp.h ``` **代码如下:** ``` #include "stdafx.h" #include <afx.h> #define USE_WINHTTP //Comment this line to user wininet. #ifdef USE_WINHTTP #include <winhttp.h> #pragma comment(lib, "winhttp.lib") #else #include <wininet.h> #pragma comment(lib, "wininet.lib") #endif #include <vector> #define BUF_SIZE (1024) class CrackedUrl { int m_scheme; CStringW m_host; int m_port; CStringW m_path; public: CrackedUrl(LPCWSTR url) { URL_COMPONENTS uc = { 0}; uc.dwStructSize = sizeof(uc); const DWORD BUF_LEN = 256; WCHAR host[BUF_LEN]; uc.lpszHostName = host; uc.dwHostNameLength = BUF_LEN; WCHAR path[BUF_LEN]; uc.lpszUrlPath = path; uc.dwUrlPathLength = BUF_LEN; WCHAR extra[BUF_LEN]; uc.lpszExtraInfo = extra; uc.dwExtraInfoLength = BUF_LEN; #ifdef USE_WINHTTP if (!WinHttpCrackUrl(url, 0, ICU_ESCAPE, &uc)) { printf("Error:WinHttpCrackUrl failed!\n"); } #else if (!InternetCrackUrl(url, 0, ICU_ESCAPE, &uc)) { printf("Error:InternetCrackUrl failed!\n"); } #endif m_scheme = uc.nScheme; m_host = host; m_port = uc.nPort; m_path = path; } int GetScheme() const { return m_scheme; } LPCWSTR GetHostName() const { return m_host; } int GetPort() const { return m_port; } LPCWSTR GetPath() const { return m_path; } static CStringA UrlEncode(const char* p) { if (p == 0) return CStringA(); CStringA buf; for (;;) { int ch = (BYTE) (*(p++)); if (ch == '\0') break; if (isalnum(ch) || ch == '_' || ch == '-' || ch == '.') buf += (char)ch; else if (ch == ' ') buf += '+'; else { char c[16]; wsprintfA(c, "%%%02X", ch); buf += c; } } return buf; } }; HINTERNET OpenSession(LPCWSTR userAgent = 0) { #ifdef USE_WINHTTP return WinHttpOpen(userAgent, NULL, NULL, NULL, NULL);; #else return InternetOpen(userAgent, INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0); #endif } HINTERNET Connect(HINTERNET hSession, LPCWSTR serverAddr, int portNo) { #ifdef USE_WINHTTP return WinHttpConnect(hSession, serverAddr, (INTERNET_PORT) portNo, 0); #else return InternetConnect(hSession, serverAddr, portNo, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0); #endif } HINTERNET OpenRequest(HINTERNET hConnect, LPCWSTR verb, LPCWSTR objectName, int scheme) { DWORD flags = 0; #ifdef USE_WINHTTP if (scheme == INTERNET_SCHEME_HTTPS) { flags |= WINHTTP_FLAG_SECURE; } return WinHttpOpenRequest(hConnect, verb, objectName, NULL, NULL, NULL, flags); #else if (scheme == INTERNET_SCHEME_HTTPS) { flags |= INTERNET_FLAG_SECURE; } return HttpOpenRequest(hConnect, verb, objectName, NULL, NULL, NULL, flags, 0); #endif } BOOL AddRequestHeaders(HINTERNET hRequest, LPCWSTR header) { SIZE_T len = lstrlenW(header); #ifdef USE_WINHTTP return WinHttpAddRequestHeaders(hRequest, header, DWORD(len), WINHTTP_ADDREQ_FLAG_ADD); #else return HttpAddRequestHeaders(hRequest, header, DWORD(len), HTTP_ADDREQ_FLAG_ADD); #endif } BOOL SendRequest(HINTERNET hRequest, const void* body, DWORD size) { #ifdef USE_WINHTTP return WinHttpSendRequest(hRequest, 0, 0, const_cast<void*>(body), size, size, 0); #else return HttpSendRequest(hRequest, 0, 0, const_cast<void*>(body), size); #endif } BOOL EndRequest(HINTERNET hRequest) { #ifdef USE_WINHTTP return WinHttpReceiveResponse(hRequest, 0); #else // if you use HttpSendRequestEx to send request then use HttpEndRequest in here! return TRUE; #endif } BOOL QueryInfo(HINTERNET hRequest, int queryId, char* szBuf, DWORD* pdwSize) { #ifdef USE_WINHTTP return WinHttpQueryHeaders(hRequest, (DWORD) queryId, 0, szBuf, pdwSize, 0); #else return HttpQueryInfo(hRequest, queryId, szBuf, pdwSize, 0); #endif } BOOL ReadData(HINTERNET hRequest, void* buffer, DWORD length, DWORD* cbRead) { #ifdef USE_WINHTTP return WinHttpReadData(hRequest, buffer, length, cbRead); #else return InternetReadFile(hRequest, buffer, length, cbRead); #endif } void CloseInternetHandle(HINTERNET hInternet) { if (hInternet) { #ifdef USE_WINHTTP WinHttpCloseHandle(hInternet); #else InternetCloseHandle(hInternet); #endif } }bool HttpQuest(const CString &strUrl,const CString &strHeader,const CString &strPost,CString &strReturn,BOOL bPost) { HINTERNET hSession = 0; HINTERNET hConnect = 0; HINTERNET hRequest = 0; LPCWSTR Url=strUrl.AllocSysString(); // Test data CrackedUrl crackedUrl(Url); // Open session. hSession = OpenSession(L"User Agent"); if (hSession == NULL) { printf("Error:Open session!\n"); return -1; } // Connect. hConnect = Connect(hSession, crackedUrl.GetHostName(), crackedUrl.GetPort()); if (hConnect == NULL) { printf("Error:Connect failed!\n"); return -1; } // Open request. LPCWSTR strPostOrGet; if (bPost) { CString strTmp("POST"); strPostOrGet=strTmp.AllocSysString(); } else { CString strTmp("GET"); strPostOrGet=strTmp.AllocSysString(); } hRequest = OpenRequest(hConnect,strPostOrGet,crackedUrl.GetPath(), crackedUrl.GetScheme()); if (hRequest == NULL) { printf("Error:OpenRequest failed!\n"); return -1; } // Add request header. LPCWSTR strHeaderW = strHeader.AllocSysString(); if (!AddRequestHeaders(hRequest, strHeaderW)) { printf("Error:AddRequestHeaders failed!\n"); return -1; } // Send post data. CStringA strPostData(strPost); if (!SendRequest(hRequest, (const char*)strPostData, strPostData.GetLength())) { printf("Error:SendRequest failed!\n"); return -1; } // End request if (!EndRequest(hRequest)) { printf("Error:EndRequest failed!\n"); return -1; } char szBuf[BUF_SIZE]; DWORD dwSize = 0; szBuf[0] = 0; // Query header info. #ifdef USE_WINHTTP int contextLengthId = WINHTTP_QUERY_CONTENT_LENGTH; int statusCodeId = WINHTTP_QUERY_STATUS_CODE; int statusTextId = WINHTTP_QUERY_STATUS_TEXT; #else int contextLengthId = HTTP_QUERY_CONTENT_LENGTH; int statusCodeId = HTTP_QUERY_STATUS_CODE; int statusTextId = HTTP_QUERY_STATUS_TEXT; #endif dwSize = BUF_SIZE; if (QueryInfo(hRequest, contextLengthId, szBuf, &dwSize)) { szBuf[dwSize] = 0; printf("Content length:[%s]\n", szBuf); } dwSize = BUF_SIZE; if (QueryInfo(hRequest, statusCodeId, szBuf, &dwSize)) { szBuf[dwSize] = 0; printf("Status code:[%s]\n", szBuf); } dwSize = BUF_SIZE; if (QueryInfo(hRequest, statusTextId, szBuf, &dwSize)) { szBuf[dwSize] = 0; printf("Status text:[%s]\n", szBuf); } // read data. for (;;) { dwSize = BUF_SIZE; if (ReadData(hRequest, szBuf, dwSize, &dwSize) == FALSE) break; if (dwSize <= 0) break; szBuf[dwSize] = 0; printf("%s\n", szBuf); strReturn=(CString)szBuf; } CloseInternetHandle(hRequest); CloseInternetHandle(hConnect); CloseInternetHandle(hSession); } ```
undefined keyword or key name: TYPELIB
//Microsoft Developer Studio generated resource script. // #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #include "winres.h" ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // Chinese (P.R.C.) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS) #ifdef _WIN32 LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED #pragma code_page(936) #endif //_WIN32 ///////////////////////////////////////////////////////////////////////////// // // REGISTRY // IDR_GoodsCollection REGISTRY DISCARDABLE "GoodsCollection.rgs" IDR_Goods REGISTRY DISCARDABLE "Goods.rgs" #endif // Chinese (P.R.C.) resources ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// // English (U.S.) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) #ifdef _WIN32 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US #pragma code_page(1252) #endif //_WIN32 #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE DISCARDABLE BEGIN "resource.h\0" END 2 TEXTINCLUDE DISCARDABLE BEGIN "#include ""winres.h""\r\n" "\0" END 3 TEXTINCLUDE DISCARDABLE BEGIN "1 TYPELIB ""GoodsCenter.tlb""\r\n" "\0" END #endif // APSTUDIO_INVOKED #ifndef _MAC ///////////////////////////////////////////////////////////////////////////// // // Version // VS_VERSION_INFO VERSIONINFO FILEVERSION 1,0,0,1 PRODUCTVERSION 1,0,0,1 FILEFLAGSMASK 0x3fL #ifdef _DEBUG FILEFLAGS 0x1L #else FILEFLAGS 0x0L #endif FILEOS 0x4L FILETYPE 0x2L FILESUBTYPE 0x0L BEGIN BLOCK "StringFileInfo" BEGIN BLOCK "040904B0" BEGIN VALUE "CompanyName", "\0" VALUE "FileDescription", "GoodsCenter Module\0" VALUE "FileVersion", "1, 0, 0, 1\0" VALUE "InternalName", "GoodsCenter\0" VALUE "LegalCopyright", "Copyright 2001\0" VALUE "OriginalFilename", "GoodsCenter.DLL\0" VALUE "ProductName", "GoodsCenter Module\0" VALUE "ProductVersion", "1, 0, 0, 1\0" VALUE "OLESelfRegister", "\0" END END BLOCK "VarFileInfo" BEGIN VALUE "Translation", 0x409, 1200 END END #endif // !_MAC ///////////////////////////////////////////////////////////////////////////// // // String Table // STRINGTABLE DISCARDABLE BEGIN IDS_PROJNAME "GoodsCenter" IDS_GOODSCOLLECTION_DESC "CGoodsCollection Class" IDS_GOODS_DESC "CGoods Class" //END #endif // English (U.S.) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // 1 TYPELIB "GoodsCenter.tlb" ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED 源代码是这样的,求各位大神帮帮忙
关于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); }
怎么编写 Win32 多语言用户界面应用程序
请问win32项目怎么实现程序的多语言? 我在文件里创建了两组控件,一个是中文,一个是英文。请问怎么编程实现切换?就像下图所示 ![这是中文程序](https://img-ask.csdn.net/upload/201703/31/1490969844_238730.jpg) ![这是英文程序](https://img-ask.csdn.net/upload/201703/31/1490969877_3741.jpg) 查阅msdn文档后没太看懂,有人帮一下嘛,困住好久了 ![图片说明](https://img-ask.csdn.net/upload/201703/31/1490969992_302261.jpg) 我自己写的.rc代码如下: // Microsoft Visual C++ generated resource script. // #include "resource.h" #define APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 2 resource. // #ifndef APSTUDIO_INVOKED #include "targetver.h" #endif #define APSTUDIO_HIDDEN_SYMBOLS #include "windows.h" #undef APSTUDIO_HIDDEN_SYMBOLS ///////////////////////////////////////////////////////////////////////////// #undef APSTUDIO_READONLY_SYMBOLS ///////////////////////////////////////////////////////////////////////////// // 中文(简体,中国) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS) LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED ///////////////////////////////////////////////////////////////////////////// // // Icon // // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. IDI_LAB5 ICON "lab5.ico" IDI_SMALL ICON "small.ico" ///////////////////////////////////////////////////////////////////////////// // // Menu // IDC_LAB5 MENU BEGIN POPUP "文件(&F)" BEGIN MENUITEM "退出(&X)", IDM_EXIT END POPUP "对话框(&O)" BEGIN MENUITEM "模式对话框(&M)...\tCtrl+A", ID_32771 MENUITEM "无模式对话框(&L)...\tCtrl+B", ID_32772 MENUITEM "文件对话框(&F)...\tCtrl+C", ID_Menu END POPUP "光标类型(&C)" BEGIN MENUITEM "光标&1(箭头)\tCtrl+1", ID_32774 MENUITEM "光标&2(十字)\tCtrl+2", ID_32775 MENUITEM "光标&3(自定义)\tCtrl+3", ID_32776 END POPUP "语言(&L)" BEGIN MENUITEM "中文(&C)\tCtrl+Shift+C", ID_32777 MENUITEM "&English\tCtrl+Shift+D", ID_32778 END POPUP "关于(&A)" BEGIN MENUITEM "程序信息(&I)\tF1", IDM_ABOUT END END ///////////////////////////////////////////////////////////////////////////// // // Accelerator // IDC_LAB5 ACCELERATORS BEGIN "?", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT END ///////////////////////////////////////////////////////////////////////////// // // Dialog // /* IDD_ABOUTBOX DIALOGEX 0, 0, 170, 62 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Lab5(SDK)" FONT 9, "MS Shell Dlg", 0, 0, 0x1 BEGIN ICON IDR_MAINFRAME, IDC_STATIC, 14, 14, 21, 20 LTEXT "第五次上机练习(SDK)\n对话框、光标、位图、字符串\n\n", IDC_STATIC, 42, 14, 114, 8, SS_NOPREFIX LTEXT LTEXT "学号:10152130206\n姓名:高吉祥\n", IDC_STATIC, 42, 26, 114, 8 DEFPUSHBUTTON "确定", IDOK, 113, 41, 50, 14, WS_GROUP END */ ///////////////////////////////////////////////////////////////////////////// // // DESIGNINFO // #ifdef APSTUDIO_INVOKED GUIDELINES DESIGNINFO BEGIN IDD_ABOUTBOX, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 163 TOPMARGIN, 7 BOTTOMMARGIN, 55 END END #endif // APSTUDIO_INVOKED #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE BEGIN "resource.h\0" END 2 TEXTINCLUDE BEGIN "#ifndef APSTUDIO_INVOKED\r\n" "#include ""targetver.h""\r\n" "#endif\r\n" "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" "#include ""windows.h""\r\n" "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" "\0" END 3 TEXTINCLUDE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Cursor // IDC_CURSOR1 CURSOR "cursor1.cur" ///////////////////////////////////////////////////////////////////////////// // // String Table // STRINGTABLE BEGIN IDS_APP_TITLE "lab5" IDS_STRING1 "当前光标是:IDC_ARROW" IDS_STRING2 "当前光标是:IDC_CROSS" IDS_STRING3 "当前光标是:我的光标" IDC_LAB5 "LAB5" END #endif // 中文(简体,中国) resources ///////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////// // Englisch (GB) resources #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENG) #ifdef _WIN32 LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_UK #pragma code_page(1252) #endif //_WIN32 ///////////////////////////////////////////////////////////////////////////// // // Icon // // Icon with lowest ID value placed first to ensure application icon // remains consistent on all systems. IDI_LAB5 ICON "lab5.ico" IDI_SMALL ICON "small.ico" ///////////////////////////////////////////////////////////////////////////// // // Menu // IDC_LAB5 MENU BEGIN POPUP "&File" BEGIN MENUITEM "E&xit", IDM_EXIT END POPUP "&Dialog" BEGIN MENUITEM "&Modal Dialog...\tCtrl+A", ID_32771 MENUITEM "Modal&Less Dialog(L)...\tCtrl+B", ID_32772 MENUITEM "&File Dialog...\tCtrl+C", ID_Menu END POPUP "&Cursor" BEGIN MENUITEM "Cursor&1(ARROW)\tCtrl+1", ID_32774 MENUITEM "Cursor&2(CROSS)\tCtrl+2", ID_32775 MENUITEM "Cursor&3(UserDefined)\tCtrl+3", ID_32776 END POPUP "&Language" BEGIN MENUITEM "中文(&C)\tCtrl+Shift+C", ID_32777 MENUITEM "&English\tCtrl+Shift+D", ID_32778 END POPUP "&About" BEGIN MENUITEM "Program &Information\tF1", IDM_ABOUT END END ///////////////////////////////////////////////////////////////////////////// // // Accelerator // IDC_LAB5 ACCELERATORS BEGIN "?", IDM_ABOUT, ASCII, ALT "/", IDM_ABOUT, ASCII, ALT END ///////////////////////////////////////////////////////////////////////////// // // Dialog // /* IDD_ABOUTBOX DIALOGEX 0, 0, 170, 62 STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Lab5(SDK)" FONT 9, "MS Shell Dlg", 0, 0, 0x1 BEGIN ICON IDR_MAINFRAME, IDC_STATIC, 14, 14, 21, 20 LTEXT "第五次上机练习(SDK)\n对话框、光标、位图、字符串\n\n", IDC_STATIC, 42, 14, 114, 8, SS_NOPREFIX LTEXT LTEXT "学号:10152130206\n姓名:高吉祥\n", IDC_STATIC, 42, 26, 114, 8 DEFPUSHBUTTON "确定", IDOK, 113, 41, 50, 14, WS_GROUP END */ ///////////////////////////////////////////////////////////////////////////// // // DESIGNINFO // #ifdef APSTUDIO_INVOKED GUIDELINES DESIGNINFO BEGIN IDD_ABOUTBOX, DIALOG BEGIN LEFTMARGIN, 7 RIGHTMARGIN, 163 TOPMARGIN, 7 BOTTOMMARGIN, 55 END END #endif // APSTUDIO_INVOKED #ifdef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // TEXTINCLUDE // 1 TEXTINCLUDE BEGIN "resource.h\0" END 2 TEXTINCLUDE BEGIN "#ifndef APSTUDIO_INVOKED\r\n" "#include ""targetver.h""\r\n" "#endif\r\n" "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" "#include ""windows.h""\r\n" "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" "\0" END 3 TEXTINCLUDE BEGIN "\r\n" "\0" END #endif // APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Cursor // IDC_CURSOR1 CURSOR "cursor1.cur" ///////////////////////////////////////////////////////////////////////////// // // String Table // STRINGTABLE BEGIN IDS_APP_TITLE "lab5" IDS_STRING1 "The current cusor is:IDC_ARROW" IDS_STRING2 "The current cusor is:IDC_CROSS" IDS_STRING3 "The current cusor is:My Cursor" IDC_LAB5 "LAB5" END #endif // 中文(简体,中国) resources ///////////////////////////////////////////////////////////////////////////// #ifndef APSTUDIO_INVOKED ///////////////////////////////////////////////////////////////////////////// // // Generated from the TEXTINCLUDE 3 resource. // ///////////////////////////////////////////////////////////////////////////// #endif // not APSTUDIO_INVOKED
c#,winform,启动时Application.Run(new Form1())报错
winform的图如下 ![图片说明](https://img-ask.csdn.net/upload/201608/08/1470647752_483698.png) 报错信息如下,抛出了Win32Exception ![图片说明](https://img-ask.csdn.net/upload/201608/08/1470647668_909727.png) ![图片说明](https://img-ask.csdn.net/upload/201608/08/1470647676_921666.png) 窗体代码如下 ``` public partial class Form1 : Form { [DllImport("C:\\Users\\Dell-pc\\Desktop\\ConsoleApplication1\\Debug\\ConsoleApplication1.dll")] protected static extern bool BeginHook(); [DllImport("C:\\Users\\Dell-pc\\Desktop\\ConsoleApplication1\\Debug\\ConsoleApplication1.dll")] protected static extern bool FinishHook(); string str=""; public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } private void button1_Click(object sender, EventArgs e) { BeginHook(); } private void button2_Click(object sender, EventArgs e) { FinishHook(); } protected override void WndProc(ref System.Windows.Forms.Message msg) { str = str + msg.WParam + "\n"; label1.Text = str; } } ``` 这里导入了自己写的dll dll的cpp文件代码 ``` #include "stdafx.h" #include "ConsoleApplication1.h" #include <windows.h> HMODULE hThisDllModule; #pragma data_seg("test") HHOOK hHook=NULL; HWND hMainWindow=NULL; #pragma data_seg() LRESULT CALLBACK HandleHookMessage(int nCode, WPARAM wParam, LPARAM lParam) { PostMessage(hMainWindow, nCode, wParam, lParam); return ::CallNextHookEx(hHook, nCode, wParam, lParam); } CONSOLEAPPLICATION1_API BOOL WINAPI BeginHook() { hHook=::SetWindowsHookEx(WH_KEYBOARD, HandleHookMessage, hThisDllModule, 0); return true; } CONSOLEAPPLICATION1_API BOOL WINAPI FinishHook() { return ::UnhookWindowsHookEx(hHook); } ``` dll的h文件 ``` #ifdef CONSOLEAPPLICATION1_EXPORTS #define CONSOLEAPPLICATION1_API __declspec(dllexport) #else #define CONSOLEAPPLICATION1_API __declspec(dllimport) #endif CONSOLEAPPLICATION1_API BOOL WINAPI BeginHook(); CONSOLEAPPLICATION1_API BOOL WINAPI FinishHook(); ``` 用了def文件 ``` LIBRARY EXPORTS BeginHook FinishHook SECTIONS test Read Write Shared ``` 代码如上,这个应该是窗体代码中有哪里出错了所以启动不了窗体,但是我看不出哪里出错了,求大神指点指点
关于windows平台下的server端AcquireCredentialsHandle调用失败问题
securityFuns.AcquireCredentialsHandle执行后,返回1312错误码。如下代码: ```` #include <schannel.h> #define SECURITY_WIN32 #include <security.h> #pragma comment(lib,"crypt32.lib") int _tmain(int argc, _TCHAR* argv[]) { HMODULE modSchannel = ::LoadLibrary("SCHANNEL.DLL"); #ifdef UNICODE INIT_SECURITY_INTERFACE pfInitSecurityInterface = (INIT_SECURITY_INTERFACE)GetProcAddress(modSchannel, "InitSecurityInterfaceW" ); #else INIT_SECURITY_INTERFACE pfInitSecurityInterface = (INIT_SECURITY_INTERFACE)GetProcAddress(modSchannel, "InitSecurityInterfaceA" ); #endif PSecurityFunctionTable pSecurityFuns = pfInitSecurityInterface? pfInitSecurityInterface():NULL; SecurityFunctionTable securityFuns; ::memcpy(&securityFuns, pSecurityFuns, sizeof(securityFuns)); HCERTSTORE hMyCertStore = CertOpenSystemStore(0,_T("ROOT")); PCCERT_CONTEXT pCertContext = CertFindCertificateInStore(hMyCertStore, PKCS_7_ASN_ENCODING | X509_ASN_ENCODING, 0, CERT_FIND_SUBJECT_STR_A, L"ssltester", NULL); SCHANNEL_CRED schannelCred; memset(&schannelCred, 0, sizeof(schannelCred)); schannelCred.cCreds = 1; schannelCred.paCred = &pCertContext; // schannelCred.hRootStore = hMyCertStore; schannelCred.dwFlags = SCH_CRED_NO_SYSTEM_MAPPER|SCH_CRED_REVOCATION_CHECK_CHAIN; schannelCred.dwVersion = SCHANNEL_CRED_VERSION; schannelCred.grbitEnabledProtocols = SP_PROT_SSL3TLS1_SERVERS; TimeStamp lifetime; //证书生存时间 CredHandle hCreds; SECURITY_STATUS sec_ret = securityFuns.AcquireCredentialsHandle( NULL, UNISP_NAME, SECPKG_CRED_INBOUND, NULL, &schannelCred, NULL, NULL, &hCreds, &lifetime ); unsigned long lErrorCode; if( sec_ret != SEC_E_OK ) { lErrorCode = ::GetLastError(); //返回1312错误码 } else { lErrorCode = 0; } return 0; } ````
推荐 130 个令你眼前一亮的网站,总有一个用得着
总结了大学生活两年来,发现的 130 余个黑科技网站,总有一个会让你眼前一亮,赶紧收藏!
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
我在支付宝花了1分钟,查到了女朋友的开房记录!
在大数据时代下,不管你做什么都会留下蛛丝马迹,只要学会把各种软件运用到极致,捉奸简直轻而易举。今天就来给大家分享一下,什么叫大数据抓出轨。据史料证明,马爸爸年轻时曾被...
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
20道你必须要背会的微服务面试题,面试一定会被问到
写在前面: 在学习springcloud之前大家一定要先了解下,常见的面试题有那块,然后我们带着问题去学习这个微服务技术,那么就会更加理解springcloud技术。如果你已经学了springcloud,那么在准备面试的时候,一定要看看看这些面试题。 文章目录1、什么是微服务?2、微服务之间是如何通讯的?3、springcloud 与dubbo有哪些区别?4、请谈谈对SpringBoot 和S...
讲真,这两个IDE插件,可以让你写出质量杠杠的代码
周末躺在床上看《拯救大兵瑞恩》 周末在闲逛的时候,发现了两个优秀的 IDE 插件,据说可以提高代码的质量,我就安装了一下,试了试以后发现,确实很不错,就推荐给大家。 01、Alibaba Java 代码规范插件 《阿里巴巴 Java 开发手册》,相信大家都不会感到陌生,其 IDEA 插件的下载次数据说达到了 80 万次,我今天又贡献了一次。嘿嘿。 该项目的插件地址: https://github....
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
2020 年,大火的 Python 和 JavaScript 是否会被取而代之?
Python 和 JavaScript 是目前最火的两大编程语言,但是2020 年,什么编程语言将会取而代之呢? 作者 |Richard Kenneth Eng 译者 |明明如月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: Python 和 JavaScript 是目前最火的两大编程语言。然而,他们不可能永远屹立不倒。最终,必将像其他编程语言一...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
Flutter 会不会被苹果限制其发展?
这个可能性是存在的,而且不止是 flutter、react-native 、weex 、uni-app 、taro 、Hippy等都存在这个风险,虽然有些框架对比起 flutter 其他框架存在时间稍长,但是这不可否认它们一直都存在这个风向。 只要不是平台自己的亲儿子,那么肯定存在被限制发展的风险,所以这件事上是风险和收益之间的博弈,这是一个“后妈和前任之间的太极。” 先说现状 如今各大平台,如:...
没用过这些 IDEA 插件?怪不得写代码头疼
使用插件,可以提高开发效率。对于开发人员很有帮助。这篇博客介绍了IDEA中最常用的一些插件。
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
最全最强!世界大学计算机专业排名总结!
我正在参与CSDN200进20,希望得到您的支持,扫码续投票5次。感谢您! (为表示感谢,您投票后私信我,我把我总结的人工智能手推笔记和思维导图发送给您,感谢!) 目录 泰晤士高等教育世界大学排名 QS 世界大学排名 US News 世界大学排名 世界大学学术排名(Academic Ranking of World Universities) 泰晤士高等教育世界大学排名 中国共...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
Linux必懂知识大总结(补)
关机 1. 数据同步写入磁盘 sync 为了加快对磁盘上文件的读写速度,位于内存中的文件数据不会立即同步到磁盘上,因此关机之前需要先进行 sync 同步操作。 2. shutdown # /sbin/shutdown [-krhc] [时间] [警告讯息] -k : 不会关机,只是发送警告讯息,通知所有在线的用户 -r : 将系统的服务停掉后就重新启动 -h : 将系统的服务停掉后就...
立即提问