ARCSさんが指摘している内容は間違いです。lua.hppは、C++のコードからLuaのC APIを利用するために設計されたヘッダファイルで、内部でextern "C"を使用してCのヘッダファイルを正しくインクルードしています。これにより、C++コンパイラでCの関数を問題なく呼び出すことができます。ARCS さんが書きました: LuaのライブラリがC言語でコンパイルされているものであれば、C++から使う為にはlua.hppで良いのですが、
そちらにおいてあるのはC++でコンパイルされているため、lua.hppでインクルードしてしまうとC言語扱いされてうまくいきません。
lua.hppではなくlua.h、lualib.h、lauxlib.hをインクルードしてください。
もしC++からLuaを利用する際にC APIを直接使用する場合、lua.hppを使用するのが適切です。lua.h、lualib.h、lauxlib.hを直接インクルードすると、C++での名前修飾やリンク規約の違いに問題が生じる可能性があります。したがって、ARCSさんの提案は誤りです。