Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VisualC++——从链接器>输入>排除附加文件 我有一个VisualStudio解决方案,有多个C++项目,我发现管理链接器依赖有点麻烦。_C++_Visual Studio_Visual Studio 2012_Linker_Visual Studio 2017 - Fatal编程技术网

VisualC++——从链接器>输入>排除附加文件 我有一个VisualStudio解决方案,有多个C++项目,我发现管理链接器依赖有点麻烦。

VisualC++——从链接器>输入>排除附加文件 我有一个VisualStudio解决方案,有多个C++项目,我发现管理链接器依赖有点麻烦。,c++,visual-studio,visual-studio-2012,linker,visual-studio-2017,C++,Visual Studio,Visual Studio 2012,Linker,Visual Studio 2017,每次包含来自其他项目的头文件时,我都需要在链接器设置中显式添加相应的.obj文件。 即,在属性>链接器>输入>其他依赖项中: ..\Project1\$(Platform)\$(Configuration)\Obj1.obj ..\Project1\$(Platform)\$(Configuration)\Obj2.obj ..\Project2\$(Platform)\$(Configuration)\Obj3.obj ..\Project2\$(Platform)\$(Configurati

每次包含来自其他项目的头文件时,我都需要在链接器设置中显式添加相应的.obj文件。 即,在属性>链接器>输入>其他依赖项中:

..\Project1\$(Platform)\$(Configuration)\Obj1.obj
..\Project1\$(Platform)\$(Configuration)\Obj2.obj
..\Project2\$(Platform)\$(Configuration)\Obj3.obj
..\Project2\$(Platform)\$(Configuration)\Obj4.obj
使用通配符将大大简化此任务:

..\Project1\$(Platform)\$(Configuration)\*.obj
..\Project2\$(Platform)\$(Configuration)\*.obj
但不幸的是,这还包括Project1和Project2中的两个main.obj文件

有没有办法从链接器输入中排除这些文件

我尝试使用以下标准Windows文件搜索选项:

"..\Project1\$(Platform)\$(Configuration)\*.obj"-"..\Project1\$(Platform)\$(Configuration)\main.obj"
"..\Project2\$(Platform)\$(Configuration)\*.obj"-"..\Project2\$(Platform)\$(Configuration)\main.obj"
但显然他们在这里不受支持。事实上,简单地在有效链接器路径周围添加引号似乎会破坏一切

我也看到了,当然,我可以这样做,通过自定义脚本重命名或删除不需要的文件,但我宁愿避免这样做。我想做的似乎是一件相当合理的事情;每个项目都有自己的main.obj对我来说是有意义的,链接一些但不是全部。必须有一些标准的VS方式来表示链接每件事,除了这个链接器

但请随意纠正我当然,这就是我来这里的原因。提前谢谢

p、 美国:我目前正在使用VS2012,但我对任何VS版本的答案都感兴趣,即使是旧版本,我也不会因此而降级,但我很感兴趣。

我相信这通常是通过添加对另一个项目的引用来实现的,该项目正在构建为静态库或动态库

添加->引用

添加新引用

并选中复选框

然后,您可以根据需要将代码分解为不同的静态库和动态库


我希望这会有所帮助,我通常不会在项目文件中手动引用对象文件。

您是否尝试过..\Project1\$Platform\$Configuration\O*.obj?是的,对于我指定的具体示例,这将是一个很好的解决方案,但不幸的是,我的实际文件名更加多样化,如Geometry.obj和AbstractPartitioner.obj。但我同意这种方法。您知道是否允许使用其他通配符吗?我是否可以编写类似于????*.obj的内容来排除短于5个字符的文件名?或者,您知道在哪里可以找到允许的通配符列表吗?通常,其他对象文件将是库的一部分,您可以链接到该库。否则,您可以将.cpp文件添加到新项目中,而无需将其从原始位置移动。这样它就会自动被包括在内。嗯。。。这就是我做错的地方。谢谢你的帮助,我想我会链接到一个lib。谢谢你的帮助!如果你不介意的话,我更愿意把这个问题再讨论一段时间,但我会接受你的答案,除非我有另一个答案可以直接解决我的问题。让事情成功的方法总是不止一种: