管理されていない dll を作成し、VB.Net で使用しました。
どちらのコードも最もスニッパーは次のとおりです。
VB.Net
Imports System.Text
Imports System.Runtime.InteropServices
Module Module1
Sub Main()
Dim c As cls = New cls()
c.Start()
End Sub
End Module
Public Class cls
Declare Sub Only Lib "dllproj2.dll" Alias "Only" (b As StringBuilder)
Public Sub Start()
Dim s As StringBuilder = New StringBuilder(15)
Only(s) '**Actual call to dll code **
Dim s1 As String = s.ToString.ToLower
Dim len As Integer = s.ToString.Length.ToString()
Console.Write(s.ToString())
End Sub
End Class
C++ dll
#include<stdio.h>
#include<stdlib.h>
#include<cstring>
extern "C"{
void Only(char *a)
{
char arr[10];
printf("Reached");
sprintf(arr,"This %d",33);
printf("\n%s\n",arr);
memcpy(a,arr,10);
}
}
回線にアクセスするとすぐに Only(s)
、画像に示されている例外が発生します。
例外の原因を理解できません。コードの出力は問題ありませんが、Visual Studio 2012 Express を使用して実行すると、上記のエラーが発生します。
本番でも使用したサンプルコードですが、今後問題が発生する可能性があります。
例外を取り除く方法はありますか。
ありがとう。