阅读:1813回复:3
unresolved external symbol 问题
WinCE5.0
我在init.c里用了一个外部全局变量(在bootpart.cpp里定义过) extern DWORD g_dwLastWrittenLoc 并在函数里使用这个变量 然后build oal这个project,没有问题 并且生成了oal.lib 但是我再build kern这个project,却出现错误 oal.lib(init.obj) : error LNK2001: unresolved external symbol g_dwLastWrittenLoc kern的Source文件里我已经加了含有 DWORD g_dwLastWrittenLoc 的库文件bootpart.lib 请问这是什么原因? 在eboot/nand.cpp里我看到是这样用全局变量的 extern "C" { #include <windows.h> #include <bsp.h> #include "loader.h" #include <fmd.h> extern DWORD g_ImageType; extern UCHAR g_TOC[SECTOR_SIZE]; extern const PTOC g_pTOC; extern DWORD g_dwTocEntry; extern PBOOT_CFG g_pBootCfg; extern BOOL g_bBootMediaExist; extern MultiBINInfo g_BINRegionInfo; extern DWORD g_dwImageStartBlock; extern BOOL g_bWaitForConnect; // Is there a SmartMedia card on this device? } 但是如果我在init.c里加上 extern "C" { extern DWORD g_dwLastWrittenLoc } 因为不是C++文件,build会出现错误的extern "C" :error C2059: syntax error : 'string' |
|
|
沙发#
发布于:2007-12-17 10:06
一般在头文件中用
#if __cplusplus extern "C" { #endif 和 #if __cplusplus } #endif 将函数或者变量说明包起来,这样就能自动区分CPP和C文件了 |
|
板凳#
发布于:2007-12-17 21:16
在CPP文件中用:
extern "C" DWORD g_dwLastWrittenLoc 就行了. |
|
|
地板#
发布于:2007-12-18 10:26
嗯,解决了,C,C++混编问题
|
|
|