![]() |
#1 |
Junior Member
Join Date: Feb 2019
Posts: 1
|
Static library call
Hi,
I have a static library written in C++ (test.lib). Can I call this library method from system plugin? I copied test.lib in plugin folder and trying to call method exposed by lib but getting error. Is there any difference between calling a custom dll's method and custom lib's method? code snippet from library: // header file namespace TestLibrary { DWORD TestCall(LPCWSTR str); // Based on string content this method return 0 or 1 } code snippet from nsi script System::Call 'Test::TestLibrary::TestCall(t "custom string") i .R0' MessageBox MB_OK "Test $R0" ; it print Test Error, I am expecting some int value Any pointer highly appreciated.. Thanks, mjilani |
![]() |
![]() |
![]() |
#2 | |
Moderator
Join Date: Jun 2002
Location: ${NSISDIR}
Posts: 5,336
|
A .LIB is not executable code, you must create a .DLL. The System plug-in does not understand C++ namespaces either, you should export the function as a undecorated C function.
Quote:
Use http://www.dependencywalker.com/ to look at your exported function name. Plug-ins in the plug-ins folder only work when they follow the NSIS plug-in function ABI and you don't use the System plug-in to call them. IntOp $PostCount $PostCount + 1 |
|
![]() |
![]() |
![]() |
#3 |
Junior Member
Join Date: Mar 2016
Posts: 15
|
Look through the source code at https://github.com/kichik/nsis/tree/.../Contrib/ExDLL to learn how to make NSIS plugin entry points.
|
![]() |
![]() |
![]() |
|
Thread Tools | Search this Thread |
Display Modes | |
|
|