Если вы можете перекомпилировать вашу библиотеку, просто добавьте __declspec(dllexport)
к сигнатурам всех функций, которые вы хотите экспортировать.
void __declspec(dllexport) testfun( char* inp_buff, unsigned short* inp_len, char* buffer_decomp,unsigned *output_len,unsigned short *errorCode)
Если вы не можете этого сделать, вы можете экспортировать их, написав вместо этого файл .def. Используя файлы def, вы можете даже изменить имя функции по мере ее экспорта.
http://msdn.microsoft.com/en-us/library/28d6s79h.aspx
---- содержимое mylib.def ----
LIBRARY
EXPORTS
testfun
newname=testfun2
Затем, когда вы связываете dll, включите mylib.def
link /dll /machine:x86 /def:mylib.def mylib.lib
Edit2:
обратите внимание, что pinvoke предполагает, что импортируемые вами функции будут иметь соглашение о вызовах _stdcall, если вы не скажете иначе. Так что, возможно, вам придется сделать это и в коде C #.
[DllImport("mylib.dll", CallingConvention=CallingConvention.Cdecl)]
Или вы можете изменить код C ++ на __stdcall
void __declspec(dllexport) __stdcall testfun( char* inp_buff, ...