我寫的目標dll是流行的lzo庫的封裝。 我已經創建了名爲LZO的項目。
這裏是它在我的真實應用程序中的外觀。
LZO.h
#ifdef LZO_EXPORTS
#define LZO_API __declspec(dllexport)
#else
#define LZO_API __declspec(dllimport)
#endif
extern "C" LZO_API void Decompress(char* inp_buff,
unsigned short* inp_len, char* buffer_decomp,unsigned *output_len);
LZO.cpp
#include "stdafx.h"
#include "LZO.h"
#include "lzo1z.h"
#include "lzoconf.h"
#include "lz_decomp.c"
LZO_API void Decompress(char* inp_buff, unsigned short* inp_len, char*
buffer_decomp,unsigned *output_len)
{
//Calling from static library
lzo_decomp (inp_buff,inp_len,buffer_decomp,output_len,NULL);
}
而finaly我的C#代碼
//P/Invoke declaration
[DllImport("LZO.dll")]
private static extern void Decompress(
byte[] inp_buff,
int inp_len,
byte[] buffer_decomp,
ref int output_len
);
//And calling it as below
Decompress(src, src.Length, dst, ref outlen);
// src is byte []
// dst is also a byte []
// oulen is int
我在哪裏wrog?
你想爲導出的函數使用不同的名稱嗎?或.dll文件的不同名稱? – 2010-03-05 06:33:04