-1

我们想将一个字符串从一个 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' has unbalanced the stack." 如何才能做到这一点 ?

4

1 回答 1

0

就个人而言,我会尝试这样声明:

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

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

于 2013-06-27T13:00:24.530 回答