我的目标是从python脚本ctypes库访问C#dll文件函数。 我的代码是:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using RGiesecke.DllExport;
using System.Runtime.InteropServices;
namespace ConsoleApp1
{
[ComVisible(true)]
public class Program
{
[DllExport("MyFunctionName", CallingConvention = CallingConvention.Cdecl)]
[return: MarshalAs(UnmanagedType.LPWStr)]
public static string MyFunctionName([MarshalAs(UnmanagedType.LPWStr)] string iString)
{
return "hello world i'm " + iString;
}
[DllExport("Add",CallingConvention = CallingConvention.Cdecl)]
public static int Add(int a, int b)
{
return a + b;
}
[DllExport(CallingConvention = CallingConvention.Cdecl)]
static public int Subtract(int a, int b)
{
return a - b;
}
[DllExport(CallingConvention = CallingConvention.Cdecl)]
static public int Multiply(int a, int b)
{
return a * b;
}
[DllExport(CallingConvention = CallingConvention.Cdecl)]
static public int Divide(int a, int b)
{
return a / b;
}
static void Main(string[] args)
{
//Console.Write(Add(2,3));
}
}
}
python代码是:
^{pr2}$但我收到错误AttributeError:找不到函数“MyFunctionName”
当我无法访问dll文件中包含的函数时,如何解决这个错误?在
也许这有帮助。从rgieseck.DllExport公司文档: -您必须将平台目标设置为x86、ia64或x64。任何CPU程序集都无法导出函数。 -导出名称默认为方法名和stdcall的调用约定。如果这就是你想要的,你只需使用没有参数的[DllExport]。 -不能将导出放入泛型类型或导出泛型方法。(CLR不知道要使用什么类型的参数)
相关问题 更多 >
编程相关推荐