Eval Now | Sign Up | About Us | Contact

 

ISV Frequently-Asked-Questions

Installation and Configuration

Q1. I've just downloaded the kit. Are there instructions for how to use RLM when I use the Visual Studio GUI to compile and link my application, rather than the command line?  Click Here For Answer

Q2.  I cannot check out licenses on one platform from a server on another - what's wrong? Click Here For Answer

Q3.  License checkout is very slow on one system, but runs normally everywhere else - what's wrong? Click Here For Answer

 

Platform-specific Questions

Q101. How do I create universal binaries for the MAC? Click Here For Answer

Q102. On Windows, RLM fails to start the ISV server with a select() error.  What's wrong? Click Here For Answer

Q103. On Windows, I've followed the installation instructions in the "Quick-Start Guide", but the linker reports: fatal error LNK1181: cannot open input file 'ws2_32.lib'.  What's wrong? Click Here For Answer

Q104. On Windows, what version of the RLM kit do I use with my compiler? Click Here For Answer

Q105. On Linux systems, my RLM ISV servers will not run.  What's wrong? Click Here For Answer

 

API Questions

Q201. The documentation says: "...you need to periodically check the health of the connection...".  How often? What if my application does not manage to check 'often enough' (whatever this means)?  Click Here For Answer

Q202.  I read the docs of another license server product which would not hold a license unless the clients refresh the license in a certain time frame, otherwise the server would reclaim the license. Does RLM do this? Click Here For Answer

 

Answers

Q1. I've just downloaded the kit. Are there instructions for how to use RLM when I use the Visual Studio GUI to compile and link my application, rather than the command line?

In order to use the RLM kit with the Visual C++ GUI, the procedure is as follows:

  • In a command window, build the RLM SDK as specified in the manual section "IInstalling RLM". You need do this only once per release of RLM.
  • In your project settings / properties in Visual Studio:
    • Under C/C++, add ''<RLM SDK path>\src'' to the Additional Include Directories (where ''<RLM SDK Path>'' is the path to the installed RLM SDK)
    • Under the Link/Input/Additional Dependencies or Additional Library Path,
      add ''<RLM SDK path>\<platform>\rlmclient.lib'' (where ''<platform>'' is
      either ''x86_w1'' or ''x64_w1'', depending on whether the project is a 32-
      or 64-bit project)
    • Under the Link Command Line or Project Options section, make sure the following libraries are included:
      • wsock32.lib
      • Advapi32.lib
      • Gdi32.lib
      • User32.lib
      • netapi32.lib
      • kernel32.lib
      • oldnames.lib
      • shell32.lib
      • libcmt.lib

    Then you will be able to use RLM in your project without leaving the GUI.

     

Q2.  I cannot check out licenses on one platform from a server on another - what's wrong?

If you installed the RLM kit on 2 different platforms and ran the default INSTALL procedure, you may have created different publc/private key pairs. Decide which key pair you want to use, and copy them to all the platforms you are using, and re-compile //rlmsign//, your //isv server//, and any applications, and re-sign any licenses on that platform.

 

Q3.  License checkout is very slow on one system, but runs normally everywhere else - what's wrong?

When license checkouts are much slower on one (or a few) systems, the problem is usually something in the environment on that particular system.   Most likely, there is a license file (or port@host in RLM_LICENSE) that specifies a server which is unreachable from that system, so the request to the (unreachable) server times out, then succeeds from the "good" server.

Another possibility, if you have integrated an ISV-defined hostid, is that there may be something about the particular system causing your ISV-defined hostid code to take longer to run.  Note that the ISV-defined hostid code will be called before the first rlm_checkout() call after rlm_init().

 

Q101. How do I create universal binaries for the MAC?

In order to create universal binaries for the MAC platform, use the ''lipo'' command as follows:

% //lipo -create -output universal_binary ppc_binary x86_binary//

Where:

//universal_binary// is the output universal binary name
//ppc_binary// is the input PPC architecture binary
//x86_binary// is the input X86 architecture binary

In order to verify the architectures present in a binary called ''binary_name'', use:

% //lipo -info binary_name//

 

Q102. on Windows, RLM fails to start the ISV server with a select() error.  What's wrong?


Reprise has had reports on a very limited number of systems that rlm fails to start the ISV server, with errors similar to the following written to the debug log (note: the ISV name will be your ISV name, not necessarily "demo"):

03/16 04:12 (demo) select() failure: Unknown error
03/16 04:12 (demo) Out of file descriptors: Cannot clone communications handle: Unknown error
<last error repeats 10 times>
03/16 04:12 (demo) Too many errors on main socket, exiting

This can be caused by corruption of some values in the Windows registry. Reprise has no reason to believe that RLM is responsible for this registry corruption. Microsoft has published the following article on how to correct the registry when this occurs. Note that the error message indicating the problem is different in the article than the RLM error message indicating the problem, but the underlying cause is the same.

   
http://support.microsoft.com/default.aspx?scid=kb;en-us;817571

 

Q103. On Windows, I've followed the installation instructions in the "Quick-Start Guide", but the linker reports: fatal error LNK1181: cannot open input file 'ws2_32.lib'.  What's wrong?

ws2_32.lib is the Windows winsock2 library, not part of RLM.
 

Most likely the issue is that on your system some piece of the environment isn't getting defined correctly for Visual Studio.

To set up Visual Studio for use on the command line, run:

"\Program Files\Microsoft Visual Studio 8\VC\vcvarsall.bat"

 

Q104. On Windows, what version of the RLM kit do I use with my compiler?

If you are using VS6 or VS2003, use the x86_w1 RLM kit.

If you are using VS2005 or later, use the x86_w2 RLM kit, unless you are building 64-bit binaries, in which case you should use x64_w2

 

Q105. On Linux systems, my RLM ISV servers will not run.  What's wrong?

Binaries linked on Fedora Core 6 may not work on other Linux platforms due to a change in symbol table formats made to improve dynamic linking performance. The symptom is that the program will crash immediately on startup with the message "Floating exception".  If the program in question is an RLM ISV server, the RLM debug log will contain lines similar to this:

05/26 10:59 (rlm) <isv> exited due to signal 8

The workaround is to link the program with the switch "--hash-style=sysv", which causes the older style, more widely compatible symbol table to be used.

 

Q201. The documentation says: "...you need to periodically check the health of the connection...". How often? What if my application does not manage to check 'often enough' (whatever this means)?

Checking the health of the connection is done to make sure that the server has not been shut down or exited for any reason. The license count is maintained in the server in memory. If the server is restarted, then it starts over with a fresh count of licenses available. So, for example, if you have 10 licenses checked out, then the server is shut down and restarted, those 10 licenses become available again. Checking with the server in your application prevents your application from continuing to run while it thinks it has a license and the server giving that license out again to a new client.

If you check every couple of minutes, that should be sufficient. On the other hand, if your product only runs for a couple of minutes, you can skip this check.

 

Q202.  I read the docs of another license server product which would not hold a license unless the clients refresh the license in a certain time frame, otherwise the server would reclaim the license. Does RLM do this?

RLM uses TCP so the server can check the connection independent of data sent from the application. A license manager that uses UDP or rpc calls would need the application to send data periodically. This is not strictly required in RLM.
 


To find out how the Reprise License Manager can improve your company's licensing strategy, please contact us via email at info@reprisesoftware.com

 


All content copyright (c) 2006-2008 Reprise Software, Inc. All Rights Reserved.
info@reprisesoftware.com 1530 Meridian Avenue, San Jose, CA 95125

Reprise License Manager, OpenUsage, and Transparent License Policy are all trademarks of Reprise Software, Inc.  FLEXlm, FLEXnet, GLOBEtrotter Software and Macrovision are all registered trademarks of Macrovision Corporation.  All other trademarks are property of their respective owners.

Website comments to webmaster@reprisesoftware.com  Last Modified: June, 2008