前提・実現したいこと
C++でDLLを作って、VBで呼び出しました。
DLLの戻り値をStringにしたのですが、VBで呼び出した結果にゴミがついています。
なぜこんなゴミがついているのか、どうすればなくなるのか知りたい。
発生している問題・エラーメッセージ
実行結果
p}'Ver0.05
「p}'」がゴミで、実行する度に内容が違います。
該当のソースコード
<VC++>
//#includeの前の(は表示がおかしくなるので付けた。実際のコードにはついていません。
(#include "stdafx.h"
(#include <string>
extern "C" __declspec(dllexport) std::string DLLVersion() {
return "Ver0.05";
}
<VB>
-----モジュールファイル
'DLLFileがDLLファイル名
Imports System.Runtime.InteropServices
Module M02_DLL_Imp
<DllImport(DLLFile, CallingConvention:=CallingConvention.Cdecl, EntryPoint:="DLLVersion")> _
Public Function DLLVersion() As String
End Function
End Module
-----フォーム
Public Class F01_Main
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
Dim DLLVer As String
DLLVer = DLLVersion()
Debug.WriteLine(DLLVer)
End Sub
End Class
補足情報(FW/ツールのバージョンなど)
開発環境
OS:Win10 64bit
VC++:Visual C++ 2017
VB:Visual Basic 2010 Express
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/12 05:01