如何从csharp程序将字符串传递给c ++ dll

时间:2013-06-27 11:35:51

标签: c# c dllimport

我们想从csharp程序将字符串传递给vc ++。

以下是代码: 在C#

    [DllImport("ConsoleApplication2.dll")]
    public static extern int main_c(StringBuilder IpAddr, int p);
    public string[] tcp()
    {            
        StringBuilder buffer = new StringBuilder("192.168.1.100");                       
        int i = main_c(buffer, 34318);

在vc ++中

extern __declspec( dllexport ) int main_c(char *peer,int port)

{

这会产生错误,因为“:main_c'使堆栈失衡。”怎么办呢?

1 个答案:

答案 0 :(得分:0)

在个人情况下,我会尝试声明:

[DllImport("ConsoleApplication2.dll", CallingConvention=CallingConvention.Cdecl)]
public static extern int main_c([MarshalAs(UnmanagedType.LPStr)] String IpAddr, int port);

并在VC ++函数中声明指针const,因为它不应该写在那里。你甚至不需要StringBuilder。