【发布时间】:2011-12-02 09:04:55
【问题描述】:
抱歉标题不好,但希望描述更清楚。
目前,我有一个与其他库(如 libpng、libvorbis 等)一起构建的主要应用程序。我正在尝试将 libtheoraplayer 添加到主应用程序,但我一直遇到问题:
1) 链接到预先构建的 llibtheoraplayer 库并包含适当的头文件时,我会收到一个错误,提示找不到 pushMemoryManager(我们自定义内存管理器的一部分)
2) 与主应用程序一起构建库导致链接器错误“error LNK2005: "void * __cdecl operator new(unsigned int,void *)" (??2@YAPAXIPAX@Z) 已在 win32Mem 中定义。对象”
我不太确定从哪里开始调试它。主应用程序不支持 STL,我首先将 libtheoraplayer 中对 STL 的引用更改为我们自己的 STL 替换,但在找到有问题的文件并更改它们后,我仍然遇到上述错误 2。
有什么疯狂的想法吗?
【问题讨论】:
-
替换标准库(如果只是 STL 部分)是愚蠢的,除非你有一个很好的理由。
-
有一个该死的好理由来替换 STL。旧版本的 Microsoft STL 耗费了大量时间,而其 STL 的某些组件仍然如此。然而,更换它们的分配器几乎是不可能的。