关于unresolved external symbol

黑夜愁客 2008-03-11 09:39:40
我把VirtualWiFi的build环境从DDK移到了WDK,之后在编译就出现了unresolved external symbol的问题,比如:
d:\microsoftresearchmesh\virtualwifi\source\service\virtualwifisvc.obj : error L
NK2019: unresolved external symbol _free referenced in function _ServiceStart@8
d:\microsoftresearchmesh\virtualwifi\source\service\virtualwifisvc.obj : error L
NK2019: unresolved external symbol _malloc referenced in function _ServiceStart@
8
d:\microsoftresearchmesh\virtualwifi\source\service\virtualwifisvc.obj : error L
NK2019: unresolved external symbol _sprintf referenced in function _ServiceStop@
0

源代码是:
// create a security descriptor that allows anyone to write to
// the pipe...
//
pSD = (PSECURITY_DESCRIPTOR) malloc( SECURITY_DESCRIPTOR_MIN_LENGTH );//这里malloc

if (pSD == NULL)
goto cleanup;

if (!InitializeSecurityDescriptor(pSD, SECURITY_DESCRIPTOR_REVISION))
goto cleanup;

sa.nLength = sizeof(sa);
sa.bInheritHandle = TRUE;
sa.lpSecurityDescriptor = pSD;

......

if (hServerStopEvent)
CloseHandle(hServerStopEvent);

if (hEvents[1]) // overlapped i/o event
CloseHandle(hEvents[1]);

if ( pSD )
free( pSD );//这里free

}

很奇怪,malloc,free 不是c/c++库函数里面的吗,而且头文件我已经导入了
#include <stdio.h>
#include <stdlib.h>

帮忙看看,谢谢。
...全文
557 25 打赏 收藏 转发到动态 举报
写回复
用AI写文章
25 条回复
切换为时间正序
请发表友善的回复…
发表回复
黑夜愁客 2008-03-14
  • 打赏
  • 举报
回复
恩?
feiniao619 2008-03-12
  • 打赏
  • 举报
回复
我没用过..
错误原因是不能导入库函数

找你编译器的OPTION选项看看
黑夜愁客 2008-03-12
  • 打赏
  • 举报
回复
[Quote=引用 20 楼 coding_hello 的回复:]
倒霉孩子,叫你不用ide~~
[/Quote]
对啊,现在真的很可怜啊,等下还要去见老师........
zhangyanli 2008-03-12
  • 打赏
  • 举报
回复
库吧
野男孩 2008-03-12
  • 打赏
  • 举报
回复
倒霉孩子,叫你不用ide~~
黑夜愁客 2008-03-12
  • 打赏
  • 举报
回复
我用的是wdk自帶的checked build environment. 怎么調試啊?
黑夜愁客 2008-03-11
  • 打赏
  • 举报
回复
帮帮忙啊,有谁遇到类似的问题啊,我没辙啦
黑夜愁客 2008-03-11
  • 打赏
  • 举报
回复
帮帮忙,谁有经验.....
黑夜愁客 2008-03-11
  • 打赏
  • 举报
回复
D:\MicrosoftResearchMesh\VirtualWiFi\source>set
386=1
ALLUSERSPROFILE=C:\Documents and Settings\All Users
APPDATA=C:\Documents and Settings\Administrator\Application Data
ATL_INC_PATH=C:\WinDDK\6001.18000\inc
ATL_INC_ROOT=C:\WinDDK\6001.18000\inc
ATL_LIB_PATH=C:\WinDDK\6001.18000\lib\atl\*
BASEDIR=C:\WinDDK\6001.18000
BUILD_ALLOW_COMPILER_WARNINGS=1
BUILD_ALT_DIR=chk_wxp_x86
BUILD_DEFAULT=-ei -nmake -i
BUILD_DEFAULT_TARGETS=-386
BUILD_MAKE_PROGRAM=nmake.exe
BUILD_MULTIPROCESSOR=1
CLIENTNAME=Console
COFFBASE_TXT_FILE=C:\WinDDK\6001.18000\bin\coffbase.txt
CommonProgramFiles=C:\Program Files\Common Files
COMPUTERNAME=79E41642A044464
ComSpec=C:\WINDOWS\system32\cmd.exe
CPU=x86
CRT_INC_PATH=C:\WinDDK\6001.18000\inc\crt
CRT_LIB_PATH=C:\WinDDK\6001.18000\lib\crt\*
DDKBUILDENV=chk
DDK_INC_PATH=C:\WinDDK\6001.18000\inc\ddk
DDK_LIB_DEST=C:\WinDDK\6001.18000\lib\wxp
DDK_LIB_PATH=C:\WinDDK\6001.18000\lib\wxp\*
DDK_TARGET_OS=WinXP
DEPRECATE_DDK_FUNCTIONS=1
DRIVER_INC_PATH=C:\WinDDK\6001.18000\inc\ddk
FP_NO_HOST_CHECK=NO
HALKIT_INC_PATH=C:\WinDDK\6001.18000\inc\ddk
HALKIT_LIB_PATH=C:\WinDDK\6001.18000\lib\wxp\*
HOMEDRIVE=C:
HOMEPATH=\Documents and Settings\Administrator
IFSKIT_INC_PATH=C:\WinDDK\6001.18000\inc\ddk
IFSKIT_LIB_DEST=C:\WinDDK\6001.18000\lib\wxp
IFSKIT_LIB_PATH=C:\WinDDK\6001.18000\lib\wxp\*
include=C:\WinDDK\6001.18000\inc\api
KMDF_INC_PATH=C:\WinDDK\6001.18000\inc\wdf\kmdf
KMDF_LIB_PATH=C:\WinDDK\6001.18000\lib\wdf\kmdf\*
LANGUAGE_NEUTRAL=0
lib=C:\WinDDK\6001.18000\lib
LINK_LIB_IGNORE=4198
LOGONSERVER=\\79E41642A044464
MFC_INC_PATH=C:\WinDDK\6001.18000\inc\mfc42
MFC_LIB_PATH=C:\WinDDK\6001.18000\lib\mfc\*
MSC_OPTIMIZATION=/Od /Oi
MSDevDir=C:\Program Files\Microsoft Visual Studio\Common\MSDev98
NEW_CRTS=1
NO_BINPLACE=TRUE
NO_BROWSER_FILE=TRUE
NTDBGFILES=1
NTDEBUG=ntsd
NTDEBUGTYPE=both
NTMAKEENV=C:\WinDDK\6001.18000\bin
NT_UP=0
NUMBER_OF_PROCESSORS=2
OAK_INC_PATH=C:\WinDDK\6001.18000\inc\api
OS=Windows_NT
Path=C:\WinDDK\6001.18000\tools\sdv\bin;C:\WinDDK\6001.18000\tools\pfd\bin\bin\x
86;C:\WinDDK\6001.18000\bin\x86;C:\WinDDK\6001.18000\bin\x86\x86;C:\WinDDK\6001.
18000\bin\SelfSign;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Pr
ogram Files\Microsoft Visual Studio\Common\Tools\WinNT;C:\Program Files\Microsof
t Visual Studio\Common\MSDev98\Bin;C:\Program Files\Microsoft Visual Studio\Comm
on\Tools;C:\Program Files\Microsoft Visual Studio\VC98\bin;C:\Program Files\Stor
mII\Codec;C:\Program Files\StormII
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
PROCESSOR_ARCHITECTURE=x86
PROCESSOR_IDENTIFIER=x86 Family 6 Model 15 Stepping 2, GenuineIntel
PROCESSOR_LEVEL=6
PROCESSOR_REVISION=0f02
ProgramFiles=C:\Program Files
PROJECT_ROOT=C:\WinDDK\6001.18000\src
PROMPT=$P$G
PUBLIC_ROOT=C:\WinDDK\6001.18000
PUBLISH_CMD=@echo Publish not available...
RAZZLETOOLPATH=C:\WinDDK\6001.18000\Bin
RCNOFONTMAP=1
SDK_INCLUDE_PATH=C:\Program Files\Microsoft SDKs\Windows\v6.1\Include
SDK_INC_PATH=C:\WinDDK\6001.18000\inc\api
SDK_LIB_DEST=C:\WinDDK\6001.18000\lib\wxp
SDK_LIB_PATH=C:\WinDDK\6001.18000\lib\wxp\*
SDV=C:\WinDDK\6001.18000\tools\sdv
SESSIONNAME=Console
SystemDrive=C:
SystemRoot=C:\WINDOWS
TEMP=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp
TMP=C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp
UMDF_INC_PATH=C:\WinDDK\6001.18000\inc\wdf\umdf
USERDOMAIN=79E41642A044464
USERNAME=WinDDK
USERPROFILE=C:\Documents and Settings\Administrator
USE_OBJECT_ROOT=1
WDM_INC_PATH=C:\WinDDK\6001.18000\inc\ddk
windir=C:\WINDOWS
WPP_CONFIG_PATH=C:\WinDDK\6001.18000\bin\wppconfig
_BUILDARCH=x86
_NT_TARGET_VERSION=0x501
黑夜愁客 2008-03-11
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 MulinB 的回复:]
链接的CRT库顺序调整一下试试...
[/Quote]
能说的清楚点吗?谢谢
MulinB 2008-03-11
  • 打赏
  • 举报
回复
链接的CRT库顺序调整一下试试...
黑夜愁客 2008-03-11
  • 打赏
  • 举报
回复
因为我这样写
#define TARGETLIBS  $(CRT_LIB_PATH)\thrownew.obj
结果还是一样的错误
黑夜愁客 2008-03-11
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 akirya 的回复:]
http://msdn2.microsoft.com/en-us/library/ms792410.aspx
[/Quote]
我已经按照上面添加了DDK_LIB_PATH 和CRT_LIB_PATH 环境变量
In your sources file, use the TARGETLIBS macro and the CRT_LIB_PATH environment variable to specify thrownew.obj.

TARGETLIBS = $(CRT_LIB_PATH)\thrownew.obj


这个怎么写啊?谢谢
  • 打赏
  • 举报
回复
http://msdn2.microsoft.com/en-us/library/ms792410.aspx
Supper_Jerry 2008-03-11
  • 打赏
  • 举报
回复
应该是编译环境的问题。
黑夜愁客 2008-03-11
  • 打赏
  • 举报
回复
还有那个sprintf.
VOID ServiceStop()
{
char lpOutputString[50];
fclose(fpConfig);
sprintf(lpOutputString, "Sent Stop Event to ServiceLoop\n");
OutputDebugString(TEXT(lpOutputString));
if ( hServerStopEvent )
SetEvent(hServerStopEvent);
}

也还是上面的那个问题!!!
黑夜愁客 2008-03-11
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 NKLoveRene 的回复:]
#include <malloc.h>
[/Quote]
我加入也还是不行,因为原来在ddk中就没有导入malloc.h文件可以正常编译。现在不知道那里头文件错了,还是其他的
NKLoveRene 2008-03-11
  • 打赏
  • 举报
回复
#include <malloc.h>
NKLoveRene 2008-03-11
  • 打赏
  • 举报
回复
头文件的路径不对?
  • 打赏
  • 举报
回复
我记得写驱动的时候不能使用malloc和free只能使用相关api来分配释放内存。
加载更多回复(5)

64,645

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧