C# 调用C++动态链接库 之一 传入参数

请看。


C++:

编写C++库文件:


// testdll.cpp : 定义 DLL 应用程序的导出函数。
//


#include "stdafx.h"
#include "stdio.h"


extern "C"  void  test(char* p){
if(NULL != p){
OutputDebugString(p);
printf("%s\n",p);
}
else{
printf("empty p \n");
}


}


模块定义


LIBRARY
EXPORTS 
test @1


C#

    static class Program
    {
        /// 
        /// 应用程序的主入口点。
        /// 
        [STAThread]
        static void Main()
        {
            Console.WriteLine("start");

            //分配内存
            var data = Marshal.StringToHGlobalAnsi(string.Format("hello world"));
            test(data);
            //释放
            Marshal.FreeHGlobal(data);

            Console.WriteLine("end");
            Console.Read();
        }

        [DllImport("testdll.dll",CallingConvention = CallingConvention.Cdecl)]
        private static extern void test(IntPtr p);
    }


运行结果



你可能感兴趣的:(C#,C++)