计算机丢失MSVCR90.dll问题

来源:互联网 发布:seo工程师认证 编辑:程序博客网 时间:2024/05/16 23:36

添加了一段第三方代码,结果总是提示下面错误:


这种问题最容易想到vs安装不正确,丢失了这个DLL。尝试google下载了一个,丢到System32下,结果无济于事。错误更离谱:


于是决定差个究竟,步骤,逐段注释代码然后运行试错,最终问题定位在strdup函数的调用上。右键调至它定义的地方:

#if     !__STDC__#if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)#pragma push_macro("strdup")#undef strdup#endif_Check_return_ _CRT_NONSTDC_DEPRECATE(_strdup) _CRTIMP char * __cdecl strdup(_In_opt_z_ const char * _Src);#if defined(_DEBUG) && defined(_CRTDBG_MAP_ALLOC)#pragma pop_macro("strdup")#endif#endif  /* !__STDC__ */
注意 __STDC__宏,说明这个函数不是标准C函数。

这里列出了C标准库string.h中定义的内容:

<cstring> (string.h)C StringsThis header file defines several functions to manipulate C strings and arrays.FunctionsCopying:memcpyCopy block of memory (function )memmoveMove block of memory (function )strcpyCopy string (function )strncpyCopy characters from string (function )Concatenation:strcatConcatenate strings (function )strncatAppend characters from string (function )Comparison:memcmpCompare two blocks of memory (function )strncmp Compare two strings (function )strcoll Compare two strings using locale (function )strncmp Compare characters of two strings (function )strxfrm Transform string using locale (function )Searching:memchrLocate character in block of memory (function )strchr Locate first occurrence of character in string (function )strcspn Get span until character in string (function )strpbrk Locate characters in string (function )strrchr Locate last occurrence of character in string (function )strspn Get span of character set in string (function )strstr Locate substring (function )strtok Split string into tokens (function )Other:memset Fill block of memory (function )strerror Get pointer to error message string (function )strlen Get string length (function )MacrosNULL Null pointer (macro )Types size_t Unsigned integral type (type )
ref:http://www.cplusplus.com/reference/cstring/


解决方法自己实现这个函数!

char* x_strndup( const char *s1, size_t n){char *copy= (char*)malloc( n+1 );memcpy( copy, s1, n );copy[n] = 0;return copy;};char* x_strdup( const char* s1 ){char* copy = (char*)malloc(strlen(s1) + 1);strcpy(copy, s1);return copy;}




1 0
原创粉丝点击