Converting static link library to dynamic dll
dll, static, visual-c++
Solution
If you can recompile your lib, just add `__declspec(dllexport)` to the signatures of all of the functions you want to be exported.
void __declspec(dllexport) testfun( char* inp_buff, unsigned short* inp_len, char* buffer_decomp,unsigned *output_len,unsigned short *errorCode)
If you can't do that, then you can export them by writing a .def file instead. Using def files you can even change the name of a function as it is exported. http://msdn.microsoft.com/en-us/library/28d6s79h.aspx
---- contents of mylib.def ----
LIBRARY
EXPORTS
testfun
newname=testfun2
Then when you link the dll, include mylib.def
link /dll /machine:x86 /def:mylib.def mylib.lib
Edit2:
note that pinvoke assumes that the functions you import will have _stdcall calling convention unless you say otherwise. So you might need to do this as well, in your C# code.
[DllImport("mylib.dll", CallingConvention=CallingConvention.Cdecl)]
Or, you could change your C++ code to be __stdcall
void __declspec(dllexport) __stdcall testfun( char* inp_buff, ...
Problem
I have .lib file with its header (.h) file. This file have a few functions that need to be used in C# application. After googling I found that I need to create a dynamic DLL from this static library and call this dynamic DLL from C# code using interop. I have created a win32 project and selected type DLL. Included header file and added .lib to additional dependencies. I am able to see the functions defined in the static library (when I press ctrl + space). As a total newbie I do not know how I can export the function, which is, in .lib with following signature: ``` void testfun( char* inp_buff, unsigned short* inp_len, char* buffer_decomp,unsigned *output_len,unsigned short *errorCode) ``` I want same signature in my dynamic DLL with a different name. What to write in header file and .cpp file?