C# 如何在C中动态使用DLL名称作为导入的一部分#
我想在一个静态类中声明不同客户端DLL的导入语句 大多数API都遵循相同的方法签名,对于少数API,在参数方面存在差异。我想通过使用条件编译参数来实现这一点,其中对于公共API,必须使用用户在条件参数中给出的内容来回复DLL名称。只有当用户在条件参数中给出了条件参数时,才必须包含特定于项目的导入语句 这能做到吗C# 如何在C中动态使用DLL名称作为导入的一部分#,c#,dll,import,C#,Dll,Import,我想在一个静态类中声明不同客户端DLL的导入语句 大多数API都遵循相同的方法签名,对于少数API,在参数方面存在差异。我想通过使用条件编译参数来实现这一点,其中对于公共API,必须使用用户在条件参数中给出的内容来回复DLL名称。只有当用户在条件参数中给出了条件参数时,才必须包含特定于项目的导入语句 这能做到吗 namespace Import { static class ClientImport { public static string DLLNAME;
namespace Import
{
static class ClientImport
{
public static string DLLNAME;
#if USERAS
[DllImport("IDEARASClient.dll", CallingConvention = CallingConvention.StdCall)]
public static extern Int32 InitilizeClient(String ProtocalSequence,String NetworkAddress,String PortNoString,String TempLogPath,ref Int32 hClient);
#else
DLLNAME = "IDEARASClient.dll";
#endif
[DllImport(DLLNAME, CallingConvention = CallingConvention.StdCall)]
public static extern Int32 InitilizeClient(String
ProtocalSequence,String NetworkAddress,String PortNoString,String
TempLogPath,ref Int32 hClient);
}
}
使用LoadLibrary方法获取DLL的句柄,然后调用GetProcAddress以获取所需的函数地址 然后必须将指针转换为函数委托 此处给出了一个示例: