如何在C#中实现回调从具有多个参数的本机DLL方法检索返回码
我需要从C#调用非托管DLL的本机方法。 DLL源代码当然不可用(由“第三方”提供)。如何在C#中实现回调从具有多个参数的本机DLL方法检索返回码
机DLL方法应该接受两个参数,并返回一个(本机)的整数代码:
MyDLLNativeMethod(字符串文件名,INT返回码)
机DLL方法的第一个参数是一个字符串(文件名)&秒必须是一个“参考”来收集执行后的返回码。我对如何获得返回码感到困惑。 DLL调用正常工作,根据第一个参数生成预期的文件。
我应该如何实现所需的回调以对检索到的不同返回代码值执行操作?
// ~~~~~~~~~~~~~~~~~~~~
// Main entry point
// ~~~~~~~~~~~~~~~~~~~~
namespace MyProject
{
class Program
{
static void Main(string[] args)
{
MyDLLCaller _dllcaller = new MyDLLCaller();
_dllcaller.MyDLLNativeMethod("test_file.txt");
}
}
}
// ~~~~~~~~~~~~~~~~~~~~
// DLL calling class
// ~~~~~~~~~~~~~~~~~~~~
namespace MyProject
{
class MyDLLCaller
{
// DLL Loading
[DllImport(@"C:\test\mydll.dll")]
public static extern int MyDLLNativeMethod(string _filename);
// Native DLL method pseudo code :
// MyDLLNativeMethod(string filename, int returncode).
}
}
在此先感谢
如果返回代码是第二个参数,我认为你应该使用out
关键字此:
int returncode = 0;
[DllImport(@"C:\test\mydll.dll")]
public static extern int MyDLLNativeMethod(string _filename, out int returncode);
if(returnCode != 0)
{
// something went wrong
}
某些文件,您知道应该返回错误代码试试吧。
如果外部调用上述声明与您的图书馆工作,你从调用返回的代码。
var retCode = _dllcaller.MyDLLNativeMethod("test_file.txt");
使用上面的声明:'public static extern int MyDLLNativeMethod(string _filename,out int returncode);'现在Visual Studio抱怨'“当仅仅调用这个方法时没有给出对应于所需的形式参数returncode'的参数“_filename”参数:'_dllcaller.MyDLLNativeMethod(“test_file.txt”);' – donmelchior
它是否适用于您?您想将答案标记为已接受吗? – mortb