1)解决方案包含两个项目。项目 2 依赖于项目 1(在“项目依赖项”复选框组中选中)。项目 1 中的一部分类已声明和实现,但从未在代码中使用(创建任何实例)。要在 lua 中使用这些类,它们是使用 luabind 绑定的。绑定函数被声明为每个必须绑定的类的静态方法。它使用 cpp 中的代码自动调用,并使用类似“const bool is_bound = ClassName::Bind()”的内容。生成的结果是:项目 1 的静态库和项目 2 的可执行文件。
所有的类都在脚本中绑定和可用。
2)我添加了项目3,依赖于项目2。项目2的构建结果是静态库,项目3的构建结果是可执行的。结果 - 项目 1 中定义的全部或部分类根本没有链接到二进制文件。问题 - 启动程序后,它们未绑定 ant 不能在脚本中使用。
如何解决这个问题,造成它的原因是什么?提前致谢。
PS我尝试通过“模仿使用”(作为实验)使用强制链接手动解决它。我使用了这样的功能(我知道,它非常丑陋)
template <class T, class A1, class A2>
void ForceLinking()
{
boost::function<void(A1, A2)> f =
boost::bind<T>(boost::lambda::constructor<T>(), _1, _2);
}
ForceLinking<ClassName, const string&, bool>();
结果 - 部分开始被链接,而另一部分则没有。