gtest和lua不兼容?

我经常使用gtest来进行C/C++代码的自动化测试。 我已经开始探索添加Lua来增加软件的可扩展性。 问题是,当我同时包含gtest和lua时,我最终无法得到运行的gtest程序,而是会获得lua命令提示符。

我使用的是Lua 5.1.5,并且还没有尝试过它与5.2的兼容性。

以下是一个简单的示例:

#include "gtest/gtest.h"
extern "C" {
#include "lua.h"
}

using namespace std;

class lua_test : public ::testing::Test {

protected:
    lua_test(){}
    virtual ~lua_test(){}
    virtual void SetUp()
    {
    }

    virtual void TearDown()
    {
    }
};

TEST_F(lua_test, my_test)
{
}

我怀疑问题是定义main或类似的东西的冲突。 有谁能解决这个问题吗?

如果我弄清楚了,我将继续深入挖掘并进行更新。

点赞
用户2609145
用户2609145

``` Never mind, I figured out the issue.

我解决了问题。

I am using CMake to build my dependencies. I did this to build liblua.a as well. But when I created the CMakeLists.txt file I just included every header and source file without paying enough attention to lua's Makefile (that's what I get for being in a hurry). So I included lua.c which defines main. Once I pulled that out of liblua it started working as expected.

我正在使用 CMake 来构建我的依赖项,也包括构建 liblua.a。但是,在创建 CMakeLists.txt 文件时,我只是包含了每个头文件和源文件,而不太关注 lua 的 Makefile(这就是为什么我太匆忙而犯的错误)。因此,我包含了定义 main 的 lua.c。一旦将其从 liblua 中剔除,它就像预期的那样工作了。

2014-03-27 16:33:51