C#如何调用C++写的函数啊,急啊,狂散分!!!
我现在要做一个新中新一卡通对接的小程序,可是现在一直无法连接上它的代理服务器,第一步就卡住了,向大家求救啊。
新中新SDK里面的初始化函数是这样的:
EXTC int WINAPI TA_Init3(char *IP, short port, unsigned short SysCode, unsigned short TerminalNo,bool *ProxyOffline, ULONG *MaxJnl, char* signonPWD);
我改怎么样用C#的代码去调用这个方法啊,同时把代理服务器的参数放进去,谁有示例代码啊,给我学习一下啊,谢谢。
------解决方案--------------------调用进程试试
Process proc = new Process();
proc.StartInfo.FileName = System.Windows.Forms.Application.StartupPath + "**.exe";
proc.StartInfo.Arguments = "//传递的参数"
proc.Start();
------解决方案--------------------给你几个Link:
How to: Marshal Structures Using PInvoke
http://msdn.microsoft.com/en-us/library/ef4c3t39%28v=vs.100%29.aspx
Essential P/Invoke
http://www.codeproject.com/Articles/12121/Essential-P-Invoke
Using P/Invoke to Call Unmanaged APIs from Your Managed Classes
http://msdn.microsoft.com/en-us/library/aa719104%28v=vs.71%29.aspx
Using Explicit PInvoke in C++ (DllImport Attribute)
http://msdn.microsoft.com/en-us/library/eyzhw3s8%28v=vs.100%29.aspx
Platform Invoke Tutorial
http://msdn.microsoft.com/en-us/library/aa288468%28v=VS.71%29.aspx
------解决方案--------------------http://blog.csdn.net/wangyue4/article/details/6917186
c++与c#参数对照表,按着这个改就可以
------解决方案--------------------SDK dll 是不是 32 位编译的?
bool *ProxyOffline
ULONG *MaxJnl
char* signonPWD
这 3 个参数的注释?
------解决方案--------------------新中新有c#的代码。你问他们技术要一下就可以了。
我用过两个版本新中新的都有c# sdk
------解决方案--------------------楼主,给你个连接,看了肯定会,这个很给力!http://wenku.baidu.com/view/5126f84b2b160b4e767fcf85.html?st=1
------解决方案--------------------1、 [DllImport("*****.dll")]
2、 int WINAPI TA_Init3(char *IP, short port, unsigned short SysCode, unsigned short TerminalNo,bool *ProxyOffline, ULONG *MaxJnl, char* signonPWD)
分析:
char* IP ,在此处应该是一个字符串,可以用StringBuider试试。
sort port, int
unsigned short , int
unsigned short, int
bool* , 头痛, 试试 byte吧。
ULong*,
char*, StringBuider
3、其实不一定能实现,万一不行,就只能用IntPtr做参数,然后再分析IntPtr内的数据,最后试数据所有的合格项。
------解决方案--------------------4、推荐一个工具:
P/Invoke Interop Assistant
可以把API自动生成C#代码,你可以参照一下他的写法。
-----