Search icon CANCEL
Subscription
0
Cart icon
Your Cart (0 item)
Close icon
You have no products in your basket yet
Arrow left icon
Explore Products
Best Sellers
New Releases
Books
Videos
Audiobooks
Learning Hub
Newsletter Hub
Free Learning
Arrow right icon
timer SALE ENDS IN
0 Days
:
00 Hours
:
00 Minutes
:
00 Seconds
 Integrate Lua with C++
 Integrate Lua with C++

Integrate Lua with C++: Seamlessly integrate Lua scripting to enhance application flexibility

eBook
$27.98 $39.99
Paperback
$49.99
Subscription
Free Trial
Renews at $19.99p/m

What do you get with eBook?

Product feature icon Instant access to your Digital eBook purchase
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
Product feature icon AI Assistant (beta) to help accelerate your learning
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Table of content icon View table of contents Preview book icon Preview Book

Integrate Lua with C++

Getting Your C++ Project Lua-Ready

Throughout the course of this book, you will learn how to integrate Lua into your C++ projects. Each chapter will be based on the knowledge learned from the previous chapters. This chapter teaches you how to prepare a C++ project in which to integrate Lua and introduces the tools used in this book so that you can understand the examples better. If you already know how to use some of the tools, please feel free to skip those sections. If not, feel free to do a deeper dive after going through this chapter.

In this chapter, we will cover the following topics:

  • Compiling the Lua source code
  • Building a C++ project with the Lua library
  • Building a C++ project with the Lua source code
  • Executing a simple Lua script
  • Other toolchain options

Technical requirements

To follow this chapter and this book, you will require the following:

You do not need prior Lua programming knowledge to understand this chapter. If you have any doubts relating to the Lua code examples in this chapter, that is fine; you can read it as C++ code, although there are syntax differences. You will learn Lua as you progress through this book. While it would be beneficial, you do not need to be a Lua expert if your focus is only on the C++ side.

We decided to use open-source compilers and build tools to work with the code examples in this book because they are readily available to everyone and are also the tools of choice in most large-scale projects...

Compiling the Lua source code

There are many ways to access the Lua language. If you are using Linux, you can install Lua for development with the distribution’s package manager. For Windows, you can also find prebuilt binaries. However, since our goal is to integrate Lua into your C++ project, instead of using it as a standalone interpreter, it’s best to build from the source code yourself. When studying Lua, this will help you learn more about Lua. For example, in a modern code editor, Visual Studio Code included, you can easily check the declaration and implementation of Lua library functions.

In this section, we will focus on compiling Lua from its source code. Unarchive the downloaded Lua source code archive. Most compression tools support this, and the Lua download site also gives instructions. When you have done this, you will see a simple folder structure:

lua-5.4.6 % ls
Makefile README doc src

We will learn what the preceding code block does in the next...

Building a C++ project with the Lua library

Building your C++ project with the Lua library has the benefit of not having to include the 100+ Lua source files in your project and your source control system. However, it has some disadvantages as well. For example, if your project needs to support multiple platforms, you will need to maintain multiple pre-compiled libraries. In such a case, building from the Lua source code might be easier.

Creating a project to work with the Lua library

In the previous section, we built the Lua library from the source code. Now, let’s extract it to use within our project.

Remember the Makefile in the root of the source code folder? Open it and you will find the two lines shown here:

TO_INC= lua.h luaconf.h lualib.h lauxlib.h lua.hpp
TO_LIB= liblua.a

These are the header files and the static library you need.

Create a folder for your project. Within it, create an empty source file named main.cpp, an empty Makefile, and two empty...

Building a C++ project with the Lua source code

Building your C++ project with the Lua source code has the benefit that it is always compiled as part of your project, and there is no possibility of any surprises arising from compiler incompatibilities.

The major difference from linking with a pre-compiled Lua library is that we will now compile the Lua library from its source code first. It is also better to use the source code package without modifying it or copying only a few selected files into a new folder hierarchy. This will help in the future if you need to use a newer Lua version. In such a case, all you will need to do is to replace the Lua source code folder with the new version.

Creating a project to work with the Lua source code

To create a project using the Lua source code, we need to go back to the Lua source code package:

lua-5.4.6 % ls
Makefile README doc src

You will need the src subfolder.

Create a folder for a new project. Within it, create an empty...

Executing a simple Lua script

To execute a Lua script, you can choose to use either the Lua library or the Lua source code. For production projects, I personally recommend using the source code. For learning purposes, either way is fine. We will use Lua source code in the rest of this book.

Can you notice this?

Even if you choose to use the Lua source code, in the Makefile, you are first building the Lua source code into the Lua library and then make your project link to the library. Compared to using the Lua library directly, using the Lua source code is just doing one more step in your project. You can focus more on the similarities rather than the differences.

Now, let’s look at a more general project structure.

Creating a project

As said, there will be more complex projects in the following chapters. For now, we will explore a more general project structure. We will build and link to Lua in a shared location instead of making a copy for each project.

The...

Other toolchain options

If you do not have access to a native POSIX system, there are many other toolchain options. Here we have given two examples. Because your development platform may be different and OS updates and situations change, these only serve as some ideas. You can always research online and experiment to get a comfortable setup for yourself.

Using Visual Studio or Xcode

The Lua source code is written in C and does not need other dependencies. You can copy the src folder from the Lua source code package into Visual Studio or Xcode, either into your project directly or by configuring it as a Lua project that your main project depends on. Tweak the project settings as you need. This is quite doable.

Whatever IDE you choose to use, remember to check its license to see whether you can use the IDE for your purpose.

Using Cygwin

If you use Windows, you can get Cygwin for a POSIX experience:

  1. Download the Cygwin installer from https://sourceware.org/cygwin...

Summary

In this chapter, we have learned how to compile the Lua source code, how to link to the Lua library, and how to include the Lua source code directly in your project. Finally, we executed a Lua script from C++ code. By following these steps yourself, you should be comfortable and confident in including Lua in your C++ projects and prepared for more complex work.

In the next chapter, we will learn the basics of the Lua programming language. If you are already familiar with the Lua programming language, feel free to skip Chapter 2, Lua Fundamentals. We will come back to the communications between Lua and C++ in Chapter 3, How to Call Lua from C++.

Left arrow icon Right arrow icon
Download code icon Download Code

Key benefits

  • Get hands-on experience by integrating Lua with C++
  • Explore real-life project-ready advanced techniques for your future projects
  • Learn Lua through practical coding examples and exercises
  • Purchase of the print or Kindle book includes a free PDF eBook

Description

C++ is a popular choice in the developer community for building complex and large-scale performant applications and systems. Often a need arises to extend the system at runtime, without recompiling the whole C++ program. Using a scripting language like Lua can help achieve this goal efficiently. Integrate Lua to C++ is a comprehensive guide to integrating Lua to C++ and will enable you to achieve the goal of extending C++ programs at runtime. You’ll learn, in sequence, how to get and compile the Lua library, the Lua programming language, calling Lua code from C++, and calling C++ code from Lua. In each topic, you’ll practice with code examples, and learn the in-depth mechanisms for smooth working. Throughout the book, the latter examples build on the earlier ones while also acting as a standalone. You’ll learn to implement Lua executor and Lua binding generator, which you can use in your projects directly with further customizations. By the end of this book, you’ll have mastered integrating Lua into C++ and using Lua in your C++ project efficiently, gained the skills to extend your applications at runtime, and achieved dynamic and adaptable C++ development.

Who is this book for?

This book is for C++ developers seeking to seamlessly integrate Lua, learn the Lua programming language by examples, or enhance their understanding of Lua-C++ interaction. Basic knowledge of C++ is required to fully benefit from this book.

What you will learn

  • Explore how to access and compile Lua source code
  • Call Lua code from C++ for enhanced functionality
  • Integrate C++ code into Lua for powerful interactions
  • Deepen your understanding of Lua stack for advanced usage
  • Implement a project-ready Lua executor and binding generator
  • Extend C++ projects with customizable and extensible Lua scripting

Product Details

Country selected
Publication date, Length, Edition, Language, ISBN-13
Publication date : Oct 27, 2023
Length: 216 pages
Edition : 1st
Language : English
ISBN-13 : 9781805123637
Category :
Languages :
Tools :

What do you get with eBook?

Product feature icon Instant access to your Digital eBook purchase
Product feature icon Download this book in EPUB and PDF formats
Product feature icon Access this title in our online reader with advanced features
Product feature icon DRM FREE - Read whenever, wherever and however you want
Product feature icon AI Assistant (beta) to help accelerate your learning
OR
Modal Close icon
Payment Processing...
tick Completed

Billing Address

Product Details

Publication date : Oct 27, 2023
Length: 216 pages
Edition : 1st
Language : English
ISBN-13 : 9781805123637
Category :
Languages :
Tools :

Packt Subscriptions

See our plans and pricing
Modal Close icon
$19.99 billed monthly
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Simple pricing, no contract
$199.99 billed annually
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just $5 each
Feature tick icon Exclusive print discounts
$279.99 billed in 18 months
Feature tick icon Unlimited access to Packt's library of 7,000+ practical books and videos
Feature tick icon Constantly refreshed with 50+ new titles a month
Feature tick icon Exclusive Early access to books as they're written
Feature tick icon Solve problems while you work with advanced search and reference features
Feature tick icon Offline reading on the mobile app
Feature tick icon Choose a DRM-free eBook or Video every month to keep
Feature tick icon PLUS own as many other DRM-free eBooks or Videos as you like for just $5 each
Feature tick icon Exclusive print discounts

Frequently bought together


Stars icon
Total $ 145.97
C++ Game Animation Programming
$49.99
 Integrate Lua with C++
$49.99
C++ Programming for Linux Systems
$45.99
Total $ 145.97 Stars icon

Table of Contents

17 Chapters
Part 1 – Lua Basics Chevron down icon Chevron up icon
Chapter 1: Getting Your C++ Project Lua-Ready Chevron down icon Chevron up icon
Chapter 2: Lua Fundamentals Chevron down icon Chevron up icon
Part 2 – Calling Lua from C++ Chevron down icon Chevron up icon
Chapter 3: How to Call Lua from C++ Chevron down icon Chevron up icon
Chapter 4: Mapping Lua Types to C++ Chevron down icon Chevron up icon
Chapter 5: Working with Lua Tables Chevron down icon Chevron up icon
Part 3 – Calling C++ from Lua Chevron down icon Chevron up icon
Chapter 6: How to Call C++ from Lua Chevron down icon Chevron up icon
Chapter 7: Working with C++ Types Chevron down icon Chevron up icon
Chapter 8: Abstracting a C++ Type Exporter Chevron down icon Chevron up icon
Part 4 – Advanced Topics Chevron down icon Chevron up icon
Chapter 9: Recapping Lua-C++ Communication Mechanisms Chevron down icon Chevron up icon
Chapter 10: Managing Resources Chevron down icon Chevron up icon
Chapter 11: Multithreading with Lua Chevron down icon Chevron up icon
Index Chevron down icon Chevron up icon
Other Books You May Enjoy Chevron down icon Chevron up icon

Customer reviews

Rating distribution
Full star icon Full star icon Full star icon Full star icon Half star icon 4.5
(2 Ratings)
5 star 50%
4 star 50%
3 star 0%
2 star 0%
1 star 0%
Timur U Nov 20, 2023
Full star icon Full star icon Full star icon Full star icon Full star icon 5
There aren't many references on how to use both Lua with C++ in the same application, and this books covers it in great detail. It is also a good starter to learn Lua basics.I liked the hands-on approach. The book doesn't just explain theory; but also provides examples and practical exercises. The code snippets are clear, well-commented, and accompanied by detailed explanations.Highly recommended to anyone looking into starting using Lua in their gamedev or embedded applications!
Amazon Verified review Amazon
Vishal Nov 28, 2023
Full star icon Full star icon Full star icon Full star icon Empty star icon 4
An essential guide for developers, "Integrate Lua to C++" offers a systematic approach to seamlessly incorporate Lua scripting into C++ applications. From obtaining and compiling Lua to calling code reciprocally, the book provides practical examples for hands-on learning. The focus on implementing a Lua executor and binding generator enhances its practicality. By the end, readers gain mastery in extending C++ projects with customizable Lua scripting, making it a must-read for developers aiming to unlock the full potential of C++.
Amazon Verified review Amazon
Get free access to Packt library with over 7500+ books and video courses for 7 days!
Start Free Trial

FAQs

How do I buy and download an eBook? Chevron down icon Chevron up icon

Where there is an eBook version of a title available, you can buy it from the book details for that title. Add either the standalone eBook or the eBook and print book bundle to your shopping cart. Your eBook will show in your cart as a product on its own. After completing checkout and payment in the normal way, you will receive your receipt on the screen containing a link to a personalised PDF download file. This link will remain active for 30 days. You can download backup copies of the file by logging in to your account at any time.

If you already have Adobe reader installed, then clicking on the link will download and open the PDF file directly. If you don't, then save the PDF file on your machine and download the Reader to view it.

Please Note: Packt eBooks are non-returnable and non-refundable.

Packt eBook and Licensing When you buy an eBook from Packt Publishing, completing your purchase means you accept the terms of our licence agreement. Please read the full text of the agreement. In it we have tried to balance the need for the ebook to be usable for you the reader with our needs to protect the rights of us as Publishers and of our authors. In summary, the agreement says:

  • You may make copies of your eBook for your own use onto any machine
  • You may not pass copies of the eBook on to anyone else
How can I make a purchase on your website? Chevron down icon Chevron up icon

If you want to purchase a video course, eBook or Bundle (Print+eBook) please follow below steps:

  1. Register on our website using your email address and the password.
  2. Search for the title by name or ISBN using the search option.
  3. Select the title you want to purchase.
  4. Choose the format you wish to purchase the title in; if you order the Print Book, you get a free eBook copy of the same title. 
  5. Proceed with the checkout process (payment to be made using Credit Card, Debit Cart, or PayPal)
Where can I access support around an eBook? Chevron down icon Chevron up icon
  • If you experience a problem with using or installing Adobe Reader, the contact Adobe directly.
  • To view the errata for the book, see www.packtpub.com/support and view the pages for the title you have.
  • To view your account details or to download a new copy of the book go to www.packtpub.com/account
  • To contact us directly if a problem is not resolved, use www.packtpub.com/contact-us
What eBook formats do Packt support? Chevron down icon Chevron up icon

Our eBooks are currently available in a variety of formats such as PDF and ePubs. In the future, this may well change with trends and development in technology, but please note that our PDFs are not Adobe eBook Reader format, which has greater restrictions on security.

You will need to use Adobe Reader v9 or later in order to read Packt's PDF eBooks.

What are the benefits of eBooks? Chevron down icon Chevron up icon
  • You can get the information you need immediately
  • You can easily take them with you on a laptop
  • You can download them an unlimited number of times
  • You can print them out
  • They are copy-paste enabled
  • They are searchable
  • There is no password protection
  • They are lower price than print
  • They save resources and space
What is an eBook? Chevron down icon Chevron up icon

Packt eBooks are a complete electronic version of the print edition, available in PDF and ePub formats. Every piece of content down to the page numbering is the same. Because we save the costs of printing and shipping the book to you, we are able to offer eBooks at a lower cost than print editions.

When you have purchased an eBook, simply login to your account and click on the link in Your Download Area. We recommend you saving the file to your hard drive before opening it.

For optimal viewing of our eBooks, we recommend you download and install the free Adobe Reader version 9.