小编S. *_*ark的帖子

编译多个指令集时避免重复符号

我正在使用基于处理器功能的CPU调度来切换复杂数值算法的实现.我想包括两个版本(sse2和sse3版本的参数)我正在同一个动态库中编译.

迄今所采取的方法是包装所有架构特定的代码放到一个命名空间如namespace sse2namespace sse3,从而连接成最终的动态库时避免重复的符号名.

但是,如果我std::vector<int>在sse2和ss3版本中使用我的控件之外的某些代码(例如a )会发生什么.据我所知,std::vector实现将出现在sse2和sse3目标文件中,但理论上可能包含不同的指令,具体取决于编译器执行的优化.当我将这些目标文件链接到动态库时,将使用其中一个,我冒险尝试在仅支持sse2的cpu上运行sse3指令.

除了编译到两个独立的动态库之外,还可以做些什么来解决这个问题呢?我需要一个解决方案,在Windows,Mac OS和Linux上使用Visual Studio和clang.

c++ linker simd

6
推荐指数
1
解决办法
261
查看次数

标签 统计

c++ ×1

linker ×1

simd ×1