QQ登录

只需一步,快速开始

登录 | 立即注册 | 找回密码

熊天琪游戏论坛 - 玩出名堂

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 64|回复: 0

[文本教程] 编译有关问题:linux通过,VC6上通不过

[复制链接]
发表于 2018-3-13 02:07:09 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
编译问题:linux通过,VC6上通不过
common.h:
C/C++ code//头部标识const unsigned short Head_Identifier = 0x0808;#ifdef _MSC_VER//在src指向的内存中查找由sub指向的内存数据一致的地方unsigned char *memmem(const char *src, unsigned long srcSize, const void *sub, unsigned long subSize);#elseint GetPrivateProfileString(const char *lpSectionName,// section nameconst char *lpKeyName,    // key nameconst char *lpDefault,    // default stringchar *lpReturnedString,   // destination bufferint nSize,// size of destination bufferconst char *lpFileName    // initialization file name);#endif

common.cpp
C/C++ code#ifdef _MSC_VER/*********************************************************函数名:memmem描述:  在src指向的内存中查找由sub指向的内存数据一致的地方输入:src:要被查找的内存首地址,不被能为空srcSize:src指向的内存长度sub:要查询的内容的地址subSize:sub指向的内存长度返回:src第一个匹配的内存地址,没有找到返回NULL创建时间:20111214创建者:panjingwei修改者:修改时间:其它:*********************************************************/unsigned char *memmem(const void *src, unsigned long srcSize, const void *sub, unsigned long subSize){if (NULL==src || NULL==sub || srcSize<subSize){return NULL;}unsigned char *ptr = (unsigned char *)src;for (unsigned long i=0; i<=(srcSize-subSize); i++){if (0 != memcmp(ptr, sub, subSize)){ptr++;}else{return ptr;}}return NULL;}#else//linux下读ini配置文件,但是只有Key无Section(即lpSectionName为NULL),如果有注释必须在独立行上,不能加到末尾int GetPrivateProfileString(const char *lpSectionName, const char *lpKeyName, const char *lpDefault, char *lpReturnedString, int nSize, char *lpFileName){FILE * fd = fopen(lpFileName, "r");if(!fd){strcpy(lpReturnedString, lpDefault);return faile;}char   strline[256] = {0};while (NULL != fgets(strline, 256, fd)){char *tmp = NULL;//去掉所有空格while (NULL != (tmp = strchr(strline, ' '))){strcpy(tmp, tmp+1);}//此行是注释,继续找下一行if('#' == strline[0]){continue;}char *pEqualMark = strchr(strline, '=');//查找第一个=if (NULL == pEqualMark){continue;}else{pEqualMark[0] = 0;if (0 == strcmp(lpKeyName, strline)){strncpy(lpReturnedString, pEqualMark+1, nSize);}else{continue;}}}fclose(fd);strcpy(lpReturnedString, lpDefault);return faile;} #endif


建立了一个RtuClient的MFC工程:然后在
UINT CRtuClientApp::RecvDataThread(LPVOID pParam)函数里面调用memmem函数,编译错误:

char *recvbuf = new char[10240];
UINT recvlen = 0;
char *phead = (char *)memmem(recvbuf, recvlen, (void *)&Head_Identifier, sizeof(Head_Identifier));


-------------------Configuration: rtuClient - Win32 Debug--------------------
Linking...
rtuClient.obj : error LNK2001: unresolved external symbol "unsigned char * __cdecl memmem(char const *,unsigned long,void const *,unsigned long)" (?memmem@@YAPAEPBDKPBXK@Z)
Debug/rtuClient.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

rtuClient.exe - 2 error(s), 0 warning(s)

------最佳解决方法--------------------
unsigned char *memmem(const char *src, unsigned long srcSize, const void *sub, unsigned long subSize);</p>[table=98%][/table]
熊天琪的论坛真是太好啦, 我太喜欢熊天琪啦
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Loading...

QQ|小黑屋|Archiver|手机版|熊天琪 ( 鄂ICP备14006674号,鄂公网安备42020502000003号 

安全联盟

GMT+8, 2018-12-10 20:40 , Processed in 0.092048 second(s), 27 queries .

Powered by Discuz! X3.2 Licensed

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表