-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 unbalance 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 に答える