我正在编译一些依赖于包含防护的代码来防止对象和函数的多重定义,但Visual Studio 2008给我的链接错误有多个定义。我不明白为什么,因为我以前使用的代码非常类似,并且没有造成问题。我一定在做些愚蠢的事情,但我不知道它是什么。我也尝试去掉包含卫士并使用#pragma一次,但我得到相同的链接错误。我应该检查什么?为什么不包括曾经工作的警卫或杂注?
9
A
回答
17
如果它们是链接器错误,最可能的原因可能是标头中定义的非内联函数。
如果在包含在多个源文件中的头中有一个非内联函数,它将在每个源文件(“翻译单元”)中定义,因此该函数将被定义为多于一次,因此多重定义错误。
0
如果你遇到链接器错误...你确定你不是1)在代码中实际定义一个函数两次或2)试图做一些愚蠢的事情,如源文件(与头文件相反)#include
)?
0
这也可能是由于使用链接其他库的不同版本的cstd库引起的。请在C++/Code生成部分下检查并确保所有项目都使用相同的设置。
相关问题
- 1. 为什么在C++中不包括警卫?
- 2. SAS宏包括警卫
- 3. 米斯拉警告为包括后卫
- 4. 内部和外部杂注之间的区别是否包括警卫?
- 5. 为什么不dismissWithClickedButtonIndex曾经调用clickedButtonAtIndex?
- 6. 函数包括随机性和警卫
- 7. JSON.NET:为什么使用JToken - 曾经?
- 8. 为什么包括bom不起作用?
- 9. 为什么我的jQuery Mobile包括显然不工作?
- 10. Laravel什么是警卫?
- 11. 为什么此警报不工作
- 12. 为什么重复报警不工作?
- 13. 为什么这包括不能在jsp中工作?
- 14. 曾经工作过的SQL查询不再工作
- 15. C++包括后卫
- 16. 包括不工作
- 17. 为什么不使用注射工作?
- 18. 为什么@OneToMany批注不工作
- 19. 为什么FFMPEG工作,1080,但不具备720p大小工作... ...(包括代码)
- 20. 包括php不工作为我的navbar.php
- 21. 什么是合法的erlang警卫?
- 22. E_ACCESSDENIED在CoCreateInstance上,它曾经工作
- 23. 曾经评为js
- 24. Rails的服务器readline的错误时,包括警卫宝石
- 25. 为什么警卫不能保护我免受我
- 26. 为什么在设置AVAudioSession类别时不能使用警卫?
- 27. 为什么document.location或window.location不能工作?
- 28. 具有重复的警告包括在Objective-C后卫C++头
- 29. 问题与包括后卫
- 30. 有什么// @包括在C++注释
是的,你是对的...哎呀。谢谢! – Stewart 2009-11-24 04:52:18
你也可以通过制作模板来使它们变成弱符号 – 2009-12-09 10:39:33