日期:2014-05-17  浏览次数:21036 次

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#代码,你可以参照一下他的写法。
-----