中易网

VC写得dll在C#中如何调用,如何转化成C#代码

答案:1  悬赏:0  
解决时间 2021-01-11 10:29
VC写得dll在C#中如何调用,如何转化成C#代码
最佳答案
class Program
{
[StructLayout(LayoutKind.Sequential)]
struct TFileParam
{
byte Effect;
byte Level;
byte Speed;
byte Delay;
byte Font;
byte ShowTitle;
byte TitleColor;
byte WordColor;
} ;

[DllImport("xxx.dll", EntryPoint="SS_Open_Com", CallingConvention=CallingConvention.StdCall)]
extern static int SS_Open_Com(int addr, int com, int baud, int delay);

[DllImport("xxx.dll", EntryPoint = "SS_Open_Tcp", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
extern static int SS_Open_Tcp(string sIP, int port, int delay);

[DllImport("xxx.dll", EntryPoint = "SS_Open_Udp", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
extern static int SS_Open_Udp(string sIP, int port, int delay);

[DllImport("xxx.dll", EntryPoint = "SS_Get_Window_List", CallingConvention = CallingConvention.StdCall)]
extern static unsafe byte* SS_Get_Window_List();

[DllImport("xxx.dll", EntryPoint = "SS_Send_File", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Ansi)]
extern static int SS_Send_File(int W_index, ref TFileParam param, string ListFile, int IsSave);

[DllImport("xxx.dll", EntryPoint = "SS_Send_Buffer", CallingConvention = CallingConvention.StdCall)]
extern static int SS_Send_Buffer(int W_index, ref TFileParam param, byte[] Buffer, int IsSave);
}

具体情况我没办法测试。只能写到这里了。
如果有需要自己加上public
记得要using System.Runtime.InteropServices;
工程编译的时候属性的“生成”里面要“允许不安全的代码”,不然不能用指针追问public static extern unsafe byte* SS_Get_Window_List();
这个运行报错
错误 1 不安全代码只会在使用 /unsafe 编译的情况下出
还有就是extern "C" __declspec(dllexport) void __stdcall SS_Close(void);
extern "C" __declspec(dllexport) int __stdcall SS_Send_Time(void);
extern "C" __declspec(dllexport) int __stdcall SS_Send_Reset(void);这几个用C#如何调用追答所以我刚刚都说让你在工程属性的“生成”页面勾选“允许不安全的代码”了
不然C#里不让你用指针的。

那三个:
[DllImport("xxx.dll", EntryPoint = "SS_Close", CallingConvention = CallingConvention.StdCall)]extern static void SS_Close();
[DllImport("xxx.dll", EntryPoint = "SS_Send_Time", CallingConvention = CallingConvention.StdCall)]extern static int SS_Send_Time();
[DllImport("xxx.dll", EntryPoint = "SS_Send_Reset", CallingConvention = CallingConvention.StdCall)]extern static int SS_Send_Reset();
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
韩语听起来有些中国东北方言的感觉,不想日语
centos7怎么安装nginx
张家口哪里有卖速冻薯条的
离婚要先去民政局还是法院
水泵的流量与出水管的关系
哪个牌子的牛奶好喝?诺尔嘉怎么样?
你们知道托腹带吗?听说对孩子有好处是吗?保
静电粉末喷涂有没有voc
2.4÷0.3+6×=50解方程
cad如何建立坐标轴
「」成众填空
浙江宇顺海运有限公司怎么去啊,我要去那办事
普陀区邮政物流分销中心地址在哪,我要去那里
奥迪a5国产还是进口
观看朱永新《阅读的力量》观后感
推荐资讯
有和英雄联盟差不多的游戏吗?
防震减灾资料
马克波罗磁砖怎么去啊,我要去那办事
中国建设银行(承德县支行)(板城大街)怎么去啊
解缙巧对对联短文(六年级寒假作业)只要短
求ROM13索香漫●v●超爱这位大大啊
亚洲数码彩扩地址在哪,我要去那里办事
我是小学生,怎么能让自己喜欢的女孩喜欢你
下载记步器软件
手工吹玻璃工作室要投资多少钱?
华硕P8Z77-V 和P8H77-V LE 有什么区别吗?
所谓的幸福是什么
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?