函数中引用的未解析的外部符号 _wcstok
Posted
技术标签:
【中文标题】函数中引用的未解析的外部符号 _wcstok【英文标题】:Unresolved external symbol _wcstok referenced in function 【发布时间】:2016-01-18 04:53:41 【问题描述】:#include <ntddk.h>
#include <string.h>
.....
PWCHAR tmpBuf = NULL, pwBuf = NULL;;
tmpBuf = ExallocatePoolWithTag(NonPagePool, (MAX_SIZE + 1) * sizeof(WCHAR), BUFFER_TAG);
pwBuf = ExAllocatePoolWithTag(NonPagedPool, (MAX_SIZE + 1) * sizeof(WCHAR), BUFFER_TAG);
RtlStringCchPrintfW(tmpBuf, MAX_SIZE + 1, L"ws", ProcName);
pwBuf = wcstok(tmpBuf, L"\\");
...
错误信息:
错误 LNK2019:未解析的外部符号 _wcstok 在函数中引用
但是。 wcslen
有效
【问题讨论】:
什么版本的编译器/ddk/etc?看看Breaking Changes in Visual C++ 2015 是否适用 - 查找wcstok
部分。
What is an undefined reference/unresolved external symbol error and how do I fix it?的可能重复
内核中可用的库与用户模式不同。 wcstok 可能不完全
Visual Studio 2013,WDK 8.1
你是用C还是C++模式编译?
【参考方案1】:
Microsoft 可能会尝试强制您使用 wsctok_s
,而不是符合标准但不可重入的 wsctok
,尤其是在与 Windows 内核链接的设备驱动程序代码中。
如果strtok_s
也缺失,则表示用于内核和驱动程序开发的C 库不完整。您处于托管环境中,标准 C 库的某些部分可能会丢失。
请注意,您没有使用 wcstok()
的旧原型:Microsoft 在其 VisualStudio 2015 中更改了 wcstok
的原型,以使其符合 C 标准:
wchar_t *wcstok(wchar_t *restrict ws1, const wchar_t *restrict ws2,
wchar_t **restrict ptr);
最好避免使用这个函数,直接把代码改成wcschr()
。
如果wcschr
也丢失了,使用这个简单的实现:
/* 7.29.4.5 Wide string search functions */
wchar_t *wcschr(const wchar_t *s, wchar_t c)
for (;;)
if (*s == c)
return (wchar_t *)s;
if (*s++ == L'\0')
return NULL;
这是一个符合标准的wcstok()
实现:
wchar_t *wcstok(wchar_t *restrict s1, const wchar_t *restrict s2,
wchar_t **restrict ptr)
wchar_t *p;
if (s1 == NULL)
s1 = *ptr;
while (*s1 && wcschr(s2, *s1))
s1++;
if (!*s1)
*ptr = s1;
return NULL;
for (p = s1; *s1 && !wcschr(s2, *s1); s1++)
continue;
if (*s1)
*s1++ = L'\0';
*ptr = s1;
return p;
【讨论】:
同样的错误 :( 错误 LNK2019: 函数中引用了未解析的外部符号 _wcstok_s @koala:我修改了答案,你可以取消投反对票,改为投反对票;->
,但我怀疑你是投反对票的人……以上是关于函数中引用的未解析的外部符号 _wcstok的主要内容,如果未能解决你的问题,请参考以下文章
函数_main(OPENGL C++)中引用的未解析的外部符号_____________
LNK2019:函数“void __cdecl mainfunc(void)”中引用的未解析外部符号 _kiss_fftr_alloc
LNK2019:未解析的外部符号 _main 在函数 ___tmainCRTStartup 中引用
无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用
[转]无法解析的外部符号 _main,该符号在函数 ___tmainCRTStartup 中被引用
error LNK2019: 无法解析的外部符号 _WinMain@16,该符号在函数 ___tmainCRTStartup 中被引用