Most questions about runtime licensing failures are briefly answered at our ASN1C Licensing FAQ page. The two most common issues are addressed in this blog post. The Installation Guide also contains license troubleshooting.


ASN1C comes in two flavors: a development kit (SDK) and a runtime library (RTL). The runtime library also comes in two flavors: limited and unlimited. Limited runtime libraries are node-locked, and unlimited runtime libraries are not. While it's not unusual for the SDK to experience license issues, this blog post is primarily directed at run-time license errors.

There are two very common runtime failures: "Product is not licensed to run on this host" and "License has expired." Customers are understandably surprised by these errors when they have purchased a valid license from us.

Expired License Failures

In a common situation, a potential customer will evaluate our software, build an application, and test it. Provided that it meets their needs, they purchase a limited runtime license from us and continue development without actually regenerating source code.

This inevitably leads to the "License has expired" error message. The license key is embedded in the generated sources (in the case of C or C++, in the rtkey.h file; in the case of Java or C#, in the *Values source files) and used for license checking inside of the limited run time.

To fix this problem, regenerate the source code from the application; this will embed a new license key in the appropriate source files. Application-specific code added on top of the generated code by customers should not need revision; rerunning ASN1C with the same options used at evaluation will ensure that the expiration error will be fixed.

Hostname Failures

On the other side is the "Product is not licensed to run on this host" error message. A common scenario in this case is that a user has purchased an SDK and an unlimited runtime library from Objective Systems. After generating the code and linking the application, all seems to work just fine. The customer then proceeds to deploy their application at a customer site, only to find that the application does not start because of this error.

This usually happens because the customer has failed to link the application against the unlimited runtime libraries (or, conversely, has not distributed the application with the unlimited DLLs or JAR file). The libraries that come with the SDK are node-locked and non-optimized by design: this allows our customers to use them effectively for development in a debugging environment. They are not appropriate for distribution, however.

To fix this problem, it is necessary to link the final application against the unlimited runtime kit. When distributing an application using shared libraries, it is necessary to distribute the libraries from the unlimited runtime kit instead of the development kit.

If you have a different problem, please feel free to email us; you can also read the FAQ for other possible solutions.