C#的DllImport如何写这个函数啊?
intuncompress(Bytef*dest,uLongf*destLen,constBytef*source,uLongsourceLen);这个函数用C#如何写啊...
int uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen);
这个函数用C#如何写啊? 展开
这个函数用C#如何写啊? 展开
4个回答
展开全部
int uncompress(Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen);
DllImport[...]
int uncompress(byte[] bytes, unlong[] uls, bytes[] bytess, ulong ll);
c差不多是这样的吧,一般来说就是把指针变成数组,类型的话,相对应就行了,
char*什么的就直接放字符串或stringbuilder
DllImport[...]
int uncompress(byte[] bytes, unlong[] uls, bytes[] bytess, ulong ll);
c差不多是这样的吧,一般来说就是把指针变成数组,类型的话,相对应就行了,
char*什么的就直接放字符串或stringbuilder
参考资料: 原创
展开全部
[DllImport("dll 名称")]
static extern int uncompress(byte[] destBuffer, uint destLen, byte[]
sourceBuffer, uint sourceLen);
static extern int uncompress(byte[] destBuffer, uint destLen, byte[]
sourceBuffer, uint sourceLen);
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
非托管的是 不利用.net 生成的dll
引用 是针对托管的
你dll 必须有这个方法才行
static extern int abc(); 表示声明一个外部实现方法 abc
你的abc方法必须在dll中存在
还有dll不必须注册,注册就是让系统知道它在哪里以及一些信息,你自己指明位置跟注册一个效果
DLLimport支持的是非.net框架下面的dll 如C++ 这类编写的 用.net框架编写出来的dll 就可以直接引用啦
引用 是针对托管的
你dll 必须有这个方法才行
static extern int abc(); 表示声明一个外部实现方法 abc
你的abc方法必须在dll中存在
还有dll不必须注册,注册就是让系统知道它在哪里以及一些信息,你自己指明位置跟注册一个效果
DLLimport支持的是非.net框架下面的dll 如C++ 这类编写的 用.net框架编写出来的dll 就可以直接引用啦
追问
就是非托管的,不是.net编写的dll
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2011-07-06
展开全部
我在C#中调用在EVC中写的一个动态连接库函数报:未处理的“System.MissingMethodException”类型的异常出现在 xxx.exe 中。
在Test.h 中的定义是:
#ifdef TEST_EXPORTS
#define TEST_API __declspec(dllexport)
#else
#define TEST_API __declspec(dllimport)
#endif
TEST_API int mySum(int a,int b);
在Test.cpp 中的实现是:
#include "stdafx.h"
#include "Test.h"
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
TEST_API int mySum(int a,int b)
{
return a+b;
}
在c#中的是这样调用的:
using System.Runtime.InteropServices;
[DllImport("Test.dll")]
static extern int mySum(int a,int b);
int num=mySum(2,3); //在这里就报错
另外,站长团上有产品团购,便宜有保证
在Test.h 中的定义是:
#ifdef TEST_EXPORTS
#define TEST_API __declspec(dllexport)
#else
#define TEST_API __declspec(dllimport)
#endif
TEST_API int mySum(int a,int b);
在Test.cpp 中的实现是:
#include "stdafx.h"
#include "Test.h"
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
TEST_API int mySum(int a,int b)
{
return a+b;
}
在c#中的是这样调用的:
using System.Runtime.InteropServices;
[DllImport("Test.dll")]
static extern int mySum(int a,int b);
int num=mySum(2,3); //在这里就报错
另外,站长团上有产品团购,便宜有保证
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询