未分類

msvcr71.dllを扱う

準備

(なし)

デザイン

1. フォーム (Form1) にボタン (button1) を配置します。

サンプルコード (C#)

// 名前空間の追加
using System.Runtime.InteropServices;

// DLL の宣言
[DllImport("msvcr71.dll", CharSet = CharSet.Ansi)]
private static extern int sprintf(StringBuilder so, String sf, int val);

// コード
private void button1_Click(object sender, EventArgs e)
{
  StringBuilder sb = new StringBuilder();
  sprintf(sb, "VAl = %d", 15);
  Console.WriteLine(sb.ToString()); 
}

サンプルコード (VB.NET)

' 名前空間の追加
Imports System.Text

' DLL の宣言
Public Declare Function sprintf Lib "msvcr71.dll" (ByVal so As StringBuilder, ByVal sf As String, ByVal val As Integer) As Integer

' コード
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click

  Dim sb As New StringBuilder()
  sprintf(sb, "VAl = %d", 15)
  Console.WriteLine(sb.ToString())

End Sub

サンプルコード (C++/CLI)

この言語にはサンプルコードはありません。

解説

msvcr71.dll の sprintf を使用して、メッセージを作成します。尚、実行時に次のようなメッセージが表示されて、コードの実行が一時停止しますが、続行できます。
----------
PInvoke 関数 'WindowsFormsApplication16!WindowsFormsApplication16.Form1::sprintf' がスタックを不安定にしています。PInvoke シグネチャがアンマネージ ターゲット シグネチャに一致していないことが原因として考えられます。呼び出し規約、および PInvoke シグネチャのパラメーターがターゲットのアンマネージ シグネチャに一致していることを確認してください。

結果

IDE の [出力] タブに出力されます。(C#, VB.NET)

VAl = 15

-未分類