char*��StringBuilder�^�Ƃ��Ď擾���Ă܂����B
����͂���Ŏ��т��������̂ł����A
���ŋߊ��҂��������ɂȂ��Ă��Ȃ����Ƃ�
���o���܂����B
�@�˂ƑO�t�����Ă݂܂������A���͕����ɂ���悤��
�@�@�P�Ȃ�~�X�������������サ�Ă�����E�E�E(^-^;)
�@�@�܂��F��ȕ��@�����邼�A�Ƃ������ƂŁi��
������
�@�Ⴆ�ATestAPI.dll��TESTFUNC�Ƃ��������ȉ��̂悤��
�@�v���g�^�C�v�錾���Ƃ��܂��B
�@void __stdcall TESTFUNC( int* buf_max_size, char* buf, int* buf_len );
�@��L��C#�Ŏg���ہA���܂ł͈ȉ��̂悤�ɐ錾���Ă܂����B
�@using System;
�@using System.Runtime.InteropServices;
�@using System.Text;
�@
�@�i���j
�@
�@// buf��StringBuilder�^�Ŏ擾����
�@[DllImport("TestAPI.dll", CharSet = CharSet.Auto)]
�@private static extern void TESTFUNC(
�@ ref int buf_max_size,
�@ [MarshalAs(UnmanagedType.LPStr)] StringBuilder buf,
�@ ref int buf_len
�@);
�@TESTFUNC�͕�����̖������X�y�[�X�Ŗ��߂Ă���Ԃ��Ă��܂��B
�@
�@buf_max_size=10��"abc"�Ƃ����������Ԃ��ꍇ�A
�@buf="abc "�Ɩ����ɃX�y�[�X�������ĕԂ��Ă��܂��B
�@
�@VisualStudio.NET 2005�ł��������Ă��܂��A
�@��L�̃\�[�X����Debug�r���h���̂݊��҂ǂ��蓮�삵�܂����B
�@
�@Release�r���h�Ŏ��s�����ꍇ�́Abuf�̖����̃X�y�[�X��
�@�ꕔ�����Ă��܂��ATrim�ł̃u�����N�J�b�g�����҂ǂ����
�@�����Ă��܂���ł����B
�@
���Ή�
�@�����͐[���ǂ��Ă��܂��A�����̃o�C�g���̈Ⴂ�Ƃ�
�@���̂����肪�������C�����Ă܂��B
�@
�@�ŁA���������Y�ޕK�v�͂Ȃ��āAC������ۂ������Ηǂ��̂ł́H
�@�Ƃ���������O�̌��_�ɒB���܂����B
�@
�@C�����char��1�o�C�g�E�E�E���Ȃ킿C#�����byte�^�ł��B
�@�����ŁA�ȉ��̂悤��byte�^�̔z��Ŏ��悤��
�@�\�[�X���C�����܂����B
�@using System;
�@using System.Runtime.InteropServices;
�@
�@�i���j
�@
�@// buf��byte[]�^�Ŏ擾����
�@[DllImport("TestAPI.dll", CharSet = CharSet.Auto)]
�@private static extern void TESTFUNC(
�@ ref int buf_max_size,
�@ [MarshalAs(UnmanagedType.LPArray)] byte[] buf,
�@ ref int buf_len
�@);
�@������O�ł͂���܂����A���̑Ή��ł�����ł����B
�@����byte[]����Ō������̂ł���A�ȉ��̂悤��
�@�\�[�X�ŊȒP�Ɋm�F�ł��܂��B
�@using System.Text;
�@�i���j
�@Console.WriteLine(Encoding.ASCII.GetString(buf));
�܂��܂��Ō�ɗ���̂̓o�C�g��E�E�E�Ȃ��Ƃ�����
�����ꌏ�Ȃ̂ł����B
�ƁA�����܂ŏ����āA�O�̂��߃l�b�g�Œ��ׂĂ݂܂����B
http://www.atmarkit.co.jp/fdotnet/dotnettips/025w32string/w32string.html
�m����StringBuilder�^�Ŏ���Ă���悤�ł��B
�ӂƁADllImport����MarshalAs���ĂȂ����ƂɋC�Â��܂����B
�����A[MarshalAs(UnmanagedType.LPStr)] StringBuilder�Ƃ��Ă����ǁA
���������ė]�v�Ȃ����b�������E�E�E�H
���Ă��I�C���̐錾�~�X�Ȃ����H�H
�ł��A����������Bbyte[]�ŋ��̕����ŁB