-1
我嘗試在Visual C++ 2010中編譯一個框架DLL。我禁用了預編譯頭文件(我有理由這麼做),並用一個函數編譯了DLL並帶有微不足道的正文。但是,編譯失敗的文件dllmain.cpp有很多錯誤的那樣:編譯Visual C++ DLL時出現奇怪的錯誤
\microsoft visual studio 10.0\vc\include\cstring(18): error C2039: 'memchr' : is not a member of '`global namespace''
我dllmain.cpp代碼如下:
// dllmain.cpp : Defines the entry point for the DLL application.
#include <Windows.h>
BOOL APIENTRY DllMain(HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
對我來說,它看起來像這樣的代碼永遠不會調用任何與字符串爲什麼Visual C++在其編譯過程中訪問CString,爲什麼它會搜索memchr函數?從日誌彙編命令行如下:
CL.exe /c /ZI /nologo /W3 /WX- /Od /Oy- /D WIN32 /D _DEBUG /D _WINDOWS /D _USRDLL /D MYDLL_EXPORTS /D _WINDLL /D _UNICODE /D UNICODE /Gm /EHsc /RTC1 /MTd /GS /fp:precise /Zc:wchar_t /Zc:forScope /Fo"Debug\\" /Fd"Debug\vc100.pdb" /Gd /TP /analyze- /errorReport:prompt dllmain.cpp
你檢查了這個答案http://stackoverflow.com/questions/531916/error-c2039-memchr-is-not-a-member-of-global-namespace? – Zuljin 2013-05-02 09:57:55
我可以將你的代碼粘貼到一個空白的項目中,然後在Debug和Release中編譯好。這可能與@ Zuljin的評論有關。 – 2013-05-02 10:09:59
@Zuljin,謝謝,你說得對,我有頭,所以就是這個原因。這仍然是問題,爲什麼C++訪問它,我從來沒有在我的代碼中引用這個頭文件,但是對於微軟來說,Stack Overlow更是個問題。 –
Vitaliy
2013-05-02 10:25:08