【发布时间】:2013-02-26 01:07:19
【问题描述】:
这是我的 C# 代码示例。有没有办法减少 DllImport 属性的数量?
namespace CSLib
{
class Program
{
static void Main(string[] args)
{
CLib.test();
CLib.test2(3);
A a = new A() { a = 9, b = 5 };
CLib.test3(ref a);
}
}
class CLib
{
[DllImport("path/to/CDLL", CallingConvention = CallingConvention.Cdecl)]
public static extern void test();
[DllImport("path/to/CDLL", CallingConvention = CallingConvention.Cdecl)]
public static extern void test2(int a);
[DllImport("path/to/CDLL", CallingConvention = CallingConvention.Cdecl)]
public static extern void test3(ref A a);
}
[StructLayout(LayoutKind.Sequential)]
struct A
{
[MarshalAs(UnmanagedType.I4)]
public int a, b;
}
}
【问题讨论】:
-
你可以导入
LoadLibrary和GetProcAddress并动态加载你的导入...... -
@Blorgbeard:我有点困惑。不会是一样多的代码吗?
-
是的,少了一个
[DllImport]..也许我有点太字面意思了 -
@Blorgbeard:我希望我可以做一些事情,比如将导入放在类上并假设名称。但是所有这些代码都会生成,所以我不介意。但是会有 500 多个函数和 200 多个结构,所以它可能会变得非常大
-
-1:标题似乎完全是任意应用的(即不是真正的问题)
标签: c# .net dllimport interopservices