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
Static library call
3 posts
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.
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.
EXTERN_C DWORD WINAPI MyFunc(LPCWSTR p1)and add a .DEF file or whatever method your tool-chain uses to export functions.
{
return 42;
}
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.
Look through the source code at https://github.com/kichik/nsis/tree/.../Contrib/ExDLL to learn how to make NSIS plugin entry points.