我链接到VS2008中的一些库。如果我对链接器的了解是正确的,那么MTd用于静态链接,MDd用于动态链接(到DLL)。我的目标是静态链接一些库和其他动态链接。项目选项似乎只对链接器输入中的所有库有一个设置。我将如何做到这一点?Visual Studio:如何为链接器指定不同的运行时库? (/ MTd,MDd等)
回答
根据您对新建项目向导提示的回答方式,您的项目在设置完成后将获得一个合理的C运行时库默认值。您可以检查和改变这个(如果需要)如下:
- 在解决方案资源管理器中右键单击相关项目,选择Properties
- 外观配置属性下,C/C++,代码生成,运行时库。
但是您可以链接其他库,但您只需指定链接到链接器,输入,附加依赖项下的库。
即使您正在链接到一个DLL,它仍然会有一个.LIB文件(用于DLL的正确形式)来解析外部引用,除非您手动加载该DLL并发现所需的函数入口点。
您确实需要确保链接的LIB文件与您的应用使用相同的CRT,否则事情可能会意外地出错。
我不认为我们彼此了解。你的回答告诉我你对此知道,但我可能不理解。我的运行时库是“多线程调试(/ MTd)”,我的链接器输入是“cg.lib cgD3D9.lib Winmm.lib wininet.lib fbxsdk_20113_1d.lib d3d9.lib d3dx9.lib dinput8.lib dxguid.lib”是否这样做看起来正确?原因是我认为混合调试和发布库会导致问题。 – 2010-11-29 20:07:44
在这里查看Hans的附加信息。 `/ Mxxx`标志决定了只有CRT版本**你当前的项目**链接到 - 每个应用程序必须链接到CRT。您希望使用的任何其他**库都在您的项目属性中命名 - 它们可以是静态或动态的,但是如果您打算链接到任何DLL,则需要确保您的应用程序的CRT已准备好了DLL。任何更清楚? – 2010-11-29 20:10:23
不,你在混合它。/MD vs/MT选项只与您链接的CRT版本相关。有两种,即只有在项目中不使用任何DLL的情况下才应使用的静态版本(/ MT)。 DLL版本是您的进程中每个二进制文件都可以共享的版本,这样您就不会有堆分配的痛苦。当内存由一个模块分配并由另一个模块释放时,您会遇到的种种苦恼。
选择您自己的库完全取决于您。混合和匹配很好,链接器只是获得另一种.lib。导入库而不是静态库。请记住在使用DLL时使用/ MD。
您描述的链接器选项仅适用于CRT。静态版本将限制你在模块之间共享内存的方式。
您使用的所有其他库将根据您提供(或不提供)链接器的.lib文件进行链接。
有3种方法使用MS库
- 静态链接静态库(.LIB equivelant的.o的.A归档)
- 静态链接存根(生成的.lib编译LOADLIB/getproc)动态库的
- 如果您链接到一个lib,这是预建与MT手动加载一个动态库(LOADLIB/GetProcAddress的)
和你所要求的MD是我的问题似乎成为。
反之亦然。
它认为我将不得不下载并重新建立外部依赖关系,因为我现在被捕获到22,当我选择MT时,我的项目/解决方案的某些部分出现构建错误,当我选择MD我得到另一部分的错误..
- 1. 在相同的visual studio解决方案中使用\ MDd和\ MTd?
- 2. Visual C++运行时库链接程序的问题
- 3. 如何使用cl.exe链接静态库? (指定运行时库)
- 4. 如何构建在VS2005中使用MDd dll的MTd项目
- 5. 寻求更深入的了解Visual Studio C运行时库链接行为
- 6. 如何链接Visual Studio中的fmod库
- 7. 在Visual Studio中静态链接库
- 8. Visual Studio C++链接器警告:LNK4006与C运行时(CRT)
- 9. Javascript:设置定时器每分钟运行不同的链接
- 10. Visual Studio,csproj:如何在DependentUpon中指定链接的文件?
- 11. 在Visual Studio中链接库
- 12. 为gcc链接器指定可选库
- 13. 为什么运行时库是编译器选项而不是链接器选项?
- 14. Java如何在运行时链接库
- 15. Visual Studio 2010 Assimp库将不会链接
- 16. visual studio链接器错误
- 17. 为什么我需要为静态lib构建指定运行时库类型?
- 18. Visual Studio链接器找不到libboost_system
- 19. 同时运行Visual Studio 2008和2010
- 20. CUDA&Visual Studio 2008:尝试链接不同项目时的问题
- 21. 如何在Visual Studio中打开Web浏览器中的链接而不是Visual Studio中的链接?
- 22. VS2015不会静态链接运行时库
- 23. Visual Studio C++ 2008链接问题
- 24. 如何在链接为图片时指定链接文本?
- 25. 如何在Visual Studio中解决以下链接器错误?
- 26. 在Visual Studio中链接的MySQL库10
- 27. 针对Visual C++ Express 2008的静态运行时库链接
- 28. 链接到静态库在Visual Studio 2010
- 29. 为什么/ clr在Visual Studio中与/ mt和/ mtd不兼容?
- 30. 从标准库链接错误 - Visual Studio
我不明白这是如何帮助我。没有关于指定每个库的链接器选项的部分。 – 2010-11-29 20:01:40