我一直在尝试用我的一些DSP类创建一个静态库(.lib)。 DSP类使用Eigen库,而Eigen库又使用MKL和IPP。
我的问题是我找不到一种方法来创建这个“独立”的静态库,即如果我创建一个应用程序项目,我只需要包含我自己的DSP库.lib文件,它就是头文件。
当我尝试使用静态版本的IPP和MKL创建静态库时,出现LNK1189错误,表明超出了允许的符号数。
到目前为止,唯一有效的方法是使用IPP和MKL的动态版本,当然还要将IPP和MKL的redist路径添加到Windows环境路径变量中。遗憾的是,这取消了使用一组头文件(我自己的,引用ipp头文件)和我的.lib文件的整点。
如果不清楚我想做什么,我将非常乐意详述。
任何帮助都会非常感激。
答案 0 :(得分:0)
您的意思是静态库(您的类)和静态IPP / MKL的动态库构建?那么,由于DLL中符号的64K限制超出,您无法构建自定义动态库?因为,LNK1189是一个链接器问题。
关于IPP,我认为最简单的方法是拒绝将大量CPU优化包含在动态库中。有一种方法可以说编译器/链接器从IPP中获取什么。
查看IPP安装中的tools / staticlib目录,在那里的自述文件中。有一个关于如何最小化大小,以及自定义DLL中的公共符号数量的描述。
但是,使用这种方法,你可以只为一个CPU架构准备你的DLL,比如SSE42或AVX,因为你的DLL中没有CPU调度程序。
此致 塞吉