我需要制作一个具有以下要求的程序:
- 独立(无需安装)
- 尺寸优化
- Windows XP 兼容
问题是,例如添加 #include <d3dx9.h>
并使用单个函数将可执行文件的大小增加 370kb。
有没有什么方法/工具,如果我只使用库的几个函数,它不会完全链接到可执行文件中?
我尝试了以下但没有成功
- Release模式
- 整体程序优化
- 最小化大小 (/O1)
- 喜欢小代码(/Os)
- /OPT:REF
- /选择:ICF
- 使用链接时间代码生成(/LTCG)
这是测试代码(我使用的是 2004 年 10 月的 d3dx 版本,它允许在此处找到静态链接 https://github.com/kavika13/jumpmanzero-thirdparty)
#pragma comment (lib, "d3dx9.lib")
#include <d3dx9.h>
int main() {
D3DXCreateSphere(0, 0, 0, 0, 0, 0);
return 0;
}
注意:应该注意的是,使用同一库的更多功能会增加相同的 ~370Kb。
最佳答案
我本来打算建议/OPT:REF 但后来看到你已经尝试过了。
如果所有其他方法都失败了,您可以尝试其中一种“可执行打包程序”选项,例如 ASPack (aspack.com) 或 UPX (upx.sourceforge.net)。
它们会压缩您的可执行文件并且不会引入额外的依赖项。
关于c++ - 为什么与 Direct X 链接会大大增加我的程序大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27976240/