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
€20.98 €29.99
Paperback
€37.99
Subscription
Free Trial
Renews at €18.99p/m

What do you get with a Packt Subscription?

Free for first 7 days. $19.99 p/m after that. Cancel any time!
Product feature icon Unlimited ad-free access to the largest independent learning library in tech. Access this title and thousands more!
Product feature icon 50+ new titles added per month, including many first-to-market concepts and exclusive early access to books as they are being written.
Product feature icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Product feature icon Thousands of reference materials covering every tech concept you need to stay up to date.
Subscribe now
View plans & pricing
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 : 9781805128618
Category :
Languages :
Tools :

What do you get with a Packt Subscription?

Free for first 7 days. $19.99 p/m after that. Cancel any time!
Product feature icon Unlimited ad-free access to the largest independent learning library in tech. Access this title and thousands more!
Product feature icon 50+ new titles added per month, including many first-to-market concepts and exclusive early access to books as they are being written.
Product feature icon Innovative learning tools, including AI book assistants, code context explainers, and text-to-speech.
Product feature icon Thousands of reference materials covering every tech concept you need to stay up to date.
Subscribe now
View plans & pricing

Product Details

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

Packt Subscriptions

See our plans and pricing
Modal Close icon
€18.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
€189.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
€264.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 110.97
C++ Game Animation Programming
€37.99
 Integrate Lua with C++
€37.99
C++ Programming for Linux Systems
€34.99
Total 110.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

What is included in a Packt subscription? Chevron down icon Chevron up icon

A subscription provides you with full access to view all Packt and licnesed content online, this includes exclusive access to Early Access titles. Depending on the tier chosen you can also earn credits and discounts to use for owning content

How can I cancel my subscription? Chevron down icon Chevron up icon

To cancel your subscription with us simply go to the account page - found in the top right of the page or at https://subscription.packtpub.com/my-account/subscription - From here you will see the ‘cancel subscription’ button in the grey box with your subscription information in.

What are credits? Chevron down icon Chevron up icon

Credits can be earned from reading 40 section of any title within the payment cycle - a month starting from the day of subscription payment. You also earn a Credit every month if you subscribe to our annual or 18 month plans. Credits can be used to buy books DRM free, the same way that you would pay for a book. Your credits can be found in the subscription homepage - subscription.packtpub.com - clicking on ‘the my’ library dropdown and selecting ‘credits’.

What happens if an Early Access Course is cancelled? Chevron down icon Chevron up icon

Projects are rarely cancelled, but sometimes it's unavoidable. If an Early Access course is cancelled or excessively delayed, you can exchange your purchase for another course. For further details, please contact us here.

Where can I send feedback about an Early Access title? Chevron down icon Chevron up icon

If you have any feedback about the product you're reading, or Early Access in general, then please fill out a contact form here and we'll make sure the feedback gets to the right team. 

Can I download the code files for Early Access titles? Chevron down icon Chevron up icon

We try to ensure that all books in Early Access have code available to use, download, and fork on GitHub. This helps us be more agile in the development of the book, and helps keep the often changing code base of new versions and new technologies as up to date as possible. Unfortunately, however, there will be rare cases when it is not possible for us to have downloadable code samples available until publication.

When we publish the book, the code files will also be available to download from the Packt website.

How accurate is the publication date? Chevron down icon Chevron up icon

The publication date is as accurate as we can be at any point in the project. Unfortunately, delays can happen. Often those delays are out of our control, such as changes to the technology code base or delays in the tech release. We do our best to give you an accurate estimate of the publication date at any given time, and as more chapters are delivered, the more accurate the delivery date will become.

How will I know when new chapters are ready? Chevron down icon Chevron up icon

We'll let you know every time there has been an update to a course that you've bought in Early Access. You'll get an email to let you know there has been a new chapter, or a change to a previous chapter. The new chapters are automatically added to your account, so you can also check back there any time you're ready and download or read them online.

I am a Packt subscriber, do I get Early Access? Chevron down icon Chevron up icon

Yes, all Early Access content is fully available through your subscription. You will need to have a paid for or active trial subscription in order to access all titles.

How is Early Access delivered? Chevron down icon Chevron up icon

Early Access is currently only available as a PDF or through our online reader. As we make changes or add new chapters, the files in your Packt account will be updated so you can download them again or view them online immediately.

How do I buy Early Access content? Chevron down icon Chevron up icon

Early Access is a way of us getting our content to you quicker, but the method of buying the Early Access course is still the same. Just find the course you want to buy, go through the check-out steps, and you’ll get a confirmation email from us with information and a link to the relevant Early Access courses.

What is Early Access? Chevron down icon Chevron up icon

Keeping up to date with the latest technology is difficult; new versions, new frameworks, new techniques. This feature gives you a head-start to our content, as it's being created. With Early Access you'll receive each chapter as it's written, and get regular updates throughout the product's development, as well as the final course as soon as it's ready.We created Early Access as a means of giving you the information you need, as soon as it's available. As we go through the process of developing a course, 99% of it can be ready but we can't publish until that last 1% falls in to place. Early Access helps to unlock the potential of our content early, to help you start your learning when you need it most. You not only get access to every chapter as it's delivered, edited, and updated, but you'll also get the finalized, DRM-free product to download in any format you want when it's published. As a member of Packt, you'll also be eligible for our exclusive offers, including a free course every day, and discounts on new and popular titles.