带有 Main() 的 C++ 库分发

C++ Library distribution with a Main()

问题

C++ 库具有自动生成的 main() 函数是否可以,因为 main() 不在随它分发的头文件中?

如果不行,那么在 main() 周围包裹一个 #ifdef _DEBUG 会更好吗?

场景

我有一个 C++ Visual Studio 项目,它包装了我们所有的消息队列功能来抽象我们当前使用的任何 AMQP,并且它在发布配置中被编译为一个库。

在调试配置中,它被编译为可执行文件,因此可以对其进行一些测试 运行 以确认它是否正常工作。

我整个上午都在四处寻找,找不到任何关于这方面被认为是最佳实践的参考资料。

想法是库中唯一使用的部分是库中 MessageQueue class 的 put() 和 get()。

我只是重构测试片,你的问题就消失了:始终将你的代码构建为一个完全没有 main 函数的库,并有一个 完全独立的项目 链接到库并进行测试。这样,它的构建方式与实际发布使用完全相似,而不是作为独立的二进制可执行文件,与正常发布使用情况不同。