_memcpy、_memset 的问题,搞了3天快疯了!
我使用的是 VS2005,正在写一个标准库文件!
我设置编译器忽略所有默认库,然后自己写了一个 Memset、Memcpy 的函数来替换默认的函数(代码里也没有使用 new,而改用 GlobalAlloc 函数)!
但是当编译的时候,总是提示:
error LNK2001: 无法解析的外部符号 _memcpy
或者
error LNK2001: 无法解析的外部符号 _memset
但是我综观所有代码,都没有调用 memcpy 和 memset 函数啊!
下面是我自己写的 Memset 和 Memcpy 函数:
出错的地方(我都是把每个代码文件都注释一部分,然后看看有没有错误!如果有则表示出错的地方不在注释的部分;如果没有则表示出错的地方就是我注释掉的位置)总是出现在下面几个情况:
1、调用 Memcpy 或 Memset 时
我在包含这两个函数体实现代码的 cpp 文件中调用它们的时候没出错!但在其它的 cpp 文件中调用的话就会出错(我已经引用了头文件,或者使用 extern 来定义它们,但还是出现 error LNK2001: 无法解析的外部符号 _memxxx 这个错误
2、初始化结构变量的时候
例如:
NONCLIENTMETRICS ncm = {sizeof(NONCLIENTMETRICS)}; ← 这样会出错:error LNK2001: 无法解析的外部符号 _memset
但是:
NONCLIENTMETRICS ncm;
ncm.cbSize = sizeof(NONCLIENTMETRICS);
这样就没有错误!
连续搞了三天了,网上也没有发现我这情况,也不知道问题出在哪里!!!!!!
可能我表达的问题不够详细,有不明白的地方请举手!
我设置编译器忽略所有默认库,然后自己写了一个 Memset、Memcpy 的函数来替换默认的函数(代码里也没有使用 new,而改用 GlobalAlloc 函数)!
但是当编译的时候,总是提示:
error LNK2001: 无法解析的外部符号 _memcpy
或者
error LNK2001: 无法解析的外部符号 _memset
但是我综观所有代码,都没有调用 memcpy 和 memset 函数啊!
下面是我自己写的 Memset 和 Memcpy 函数:
void * Memset(void *dst, int val, UINT count)
{
void *start = dst;
while (count--) {
*(char *)dst = (char)val;
dst = (char *)dst + 1;
}
return start;
}
void * Memcpy(void *lpDst, const void *lpSrc, UINT uSize)
{
void *lpRet = lpDst;
while (uSize--) {
*(char *)lpDst = *(char *)lpSrc;
lpDst = (char *)lpDst + 1;
lpSrc = (char *)lpSrc + 1;
}
return lpRet;
}出错的地方(我都是把每个代码文件都注释一部分,然后看看有没有错误!如果有则表示出错的地方不在注释的部分;如果没有则表示出错的地方就是我注释掉的位置)总是出现在下面几个情况:
1、调用 Memcpy 或 Memset 时
我在包含这两个函数体实现代码的 cpp 文件中调用它们的时候没出错!但在其它的 cpp 文件中调用的话就会出错(我已经引用了头文件,或者使用 extern 来定义它们,但还是出现 error LNK2001: 无法解析的外部符号 _memxxx 这个错误
2、初始化结构变量的时候
例如:
NONCLIENTMETRICS ncm = {sizeof(NONCLIENTMETRICS)}; ← 这样会出错:error LNK2001: 无法解析的外部符号 _memset
但是:
NONCLIENTMETRICS ncm;
ncm.cbSize = sizeof(NONCLIENTMETRICS);
这样就没有错误!
连续搞了三天了,网上也没有发现我这情况,也不知道问题出在哪里!!!!!!
可能我表达的问题不够详细,有不明白的地方请举手!
...全文
相关推荐
memset,memcpy,strcpy 的用法
memset,memcpy,strcpy 的用法,详细区别还有优缺点对比!
Memset、Memcpy、Strcpy 的作用和区别
本文详细介绍了Memset、Memcpy、Strcpy 的作用及三者的区别,函数原型及使用技巧等。
浅析C++中memset,memcpy,strcpy的区别
本篇文章是对C++中memset,memcpy,strcpy的区别进行了详细的分析介绍,需要的朋友参考下
memset,memcpy,strcpy功能
源码地址: https://pan.quark.cn/s/37bb1eb4d46b 关于memset、memcpy和strcpy的运用方法,需要详尽地说明它们的差异,并且进行优缺点的比较!
详解C语言中的memset()函数
C语言memset()函数:将内存的前n个字节设置为特定的值 头文件: #include memset() 函数用来将指定内存的前n个字节设置为特定的值,其原型为: void * memset( void * ptr, int value, size_t num ); 参数说明: ptr 为要操作的内存的指针。 value 为要设置的值。你既可以向 value 传递 int 类型的值,也可以传递 char 类型的值,int 和 char 可以根据 ASCII 码相互转换。 num 为 ptr 的前 num 个字节,size_t 就是unsigned int。


