我在Visual Studio 2008下有一个MFC C ++项目编译器。
我在#include之前在我的stdafx.h中添加了一个_AFX_NO_DEBUG_CRT,以避免MFC提供的所有调试新增和删除(我希望提供自己的更好的跨平台兼容性)。
然而,当我这样做时,我得到了一系列错误,如下所示:
>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtls_.h(62) : error C2059: syntax error : '__asm'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtls_.h(62) : error C2143: syntax error : missing ')' before '{'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtls_.h(62) : error C2143: syntax error : missing ')' before '{'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtls_.h(62) : error C2143: syntax error : missing ')' before '{'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtls_.h(62) : error C2143: syntax error : missing ';' before '{'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtls_.h(62) : warning C4091: '' : ignored on left of 'int' when no variable is declared
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtls_.h(62) : error C2143: syntax error : missing ';' before 'constant'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtls_.h(62) : error C2143: syntax error : missing ';' before '}'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtls_.h(62) : error C2143: syntax error : missing ';' before ','
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtls_.h(62) : error C2059: syntax error : ')'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtls_.h(62) : error C2059: syntax error : ')'
1>c:\program files\microsoft visual studio 9.0\vc\atlmfc\include\afxtls_.h(62) : error C2059: syntax error : ')'
1
我“认为”它可能与__asm int 3调用有关,但我无法确定。以前有人有这个问题吗?如果是这样,你是如何解决的?我是否坚持使用MFC的内存跟踪?我真的希望不是因为它会使我的库不那么跨平台:(
非常感谢任何帮助!
答案 0 :(得分:2)
我想出了一种方法,它涉及使用/ FORCE:MULTIPLE命令行强制它使用我的而不是MFC。这一切似乎都很好。我现在甚至可以跟踪由我不拥有的函数执行的“mallocs”和“new”:)
如果有人有任何更好的解决方案,那么请发布它们但是现在这似乎解决了我的问题:)
答案 1 :(得分:2)
我过去曾尝试弄乱_AFX_NO_DAO_SUPPORT
宏,但它所造成的一切都导致无休止的崩溃。我最终看到了这篇文章:
PRB: Problems Occur When Defining _AFX_NO_XXX
它没有具体列出您尝试使用的那个,但它仍然适用。
答案 2 :(得分:0)
尝试将#define放在项目编译选项中,而不是放在stdafx.h的顶部。
如果您正在使用MFC,您如何期望构建跨平台库?避免新的和删除重载不会有所作为。
此外,您永远不会将分配跟踪器写为MFC提供的可靠和完整的分配跟踪器。 YAGNI,专注于开发您的实际应用程序。