2007�N05��02��

[C#]DLL���當����ichar*�j���擾����ۂ̃S�^�S�^

C#�̃A�v���ŁA�̂Ȃ����stdcall��DLL���當������擾����ہA
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
posted by �Ă�Ƃ� at 16:27| Comment(0) | TrackBack(0) | �v���O���~���O/.NET�֌W | ̃uO̓ǎ҂ɂȂ | XV`FbN
���̋L���ւ̃R�����g
�R�����g������
�����O:

���[���A�h���X:

�z�[���y�[�W�A�h���X:

�R�����g:

�F�؃R�[�h: [�K�{����]


���摜�̒��̕����𔼊p�œ��͂��Ă��������B

���̋L���ւ̃g���b�N�o�b�N