注册 登录
编程论坛 VC++/MFC

c++运行不起222222

伍则帝 发布于 2013-10-08 20:14, 465 次点击
// p108tongxulu.cpp : 定义 DLL 应用程序的导出函数。
//

#include "stdafx.h"

#define EXPORT_DLL extern "C" __declspec(dllexport)

  

//暴露的方法调用

EXPORT_DLL int Add(int a,int b)

{

    return a + b;

}

 

//返回数据结构定义

struct Bar

{

public :

    int id;

    char* name;

};

 

//使用引用返回结构

EXPORT_DLL void GetBar(Bar& bar)

{

    //Bar b;

    bar.id = 10;

    bar.name = "hi bar 中文了";

 

    //bar = b;

}

 

//返回类

class Foo

{

public :

    int id;

    char* name;

};

 

//引用返回类

EXPORT_DLL void GetFoo(Foo& foo)

{

    foo.id = 100;

    foo.name = "I'm 傻瓜";

}

这是我的源代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;

namespace ConsoleApplication1
{
    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]

    public struct Bar
    {



        /// int

        public int id;



        /// char*

        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPStr)]

        public string name;

    }





    [System.Runtime.InteropServices.StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential)]

    public struct Foo
    {



        /// int

        public int id;



        /// char*

        [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.LPStr)]

        public string name;

    }



    class Program
    {

        [DllImport("CppDll.dll", EntryPoint = "Add")]

        extern static int Add(int a, int b);



        [DllImport("CppDll.dll", EntryPoint = "GetBar", CharSet = CharSet.Ansi)]

        extern static void GetBar(ref Bar bar);



        [DllImport("CppDll.dll", EntryPoint = "GetFoo", CharSet = CharSet.Ansi)]

        extern static void GetFoo(ref Foo foo);





        static void Main(string[] args)
        {

            Console.WriteLine(Add(5, 4));



            Bar b = new Bar();

            GetBar(ref b);

            Console.WriteLine("b's id is " + b.id);

            Console.WriteLine("b's name is " + b.name);



            Foo f = new Foo();

            GetFoo(ref f);

            Console.WriteLine("f's id is " + f.id);

            Console.WriteLine("f's name is " + f.name);



            Console.Read();

        }

    }

}
只有本站会员才能查看附件,请 登录
0 回复
1