掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
VC++、VB、VBA共通DLLを作成するには?〜その2〜 (ID:68077)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
Blueさん、レスありがとうございます。 リンクは拝見していて、以下のようにテスト関数を作ってみたのですが 【DLL側】 #define DllExport extern "C" __declspec(dllexport) DllExport void __stdcall TestFunc(BSTR Input, BSTR *ReturnValue, UINT *ErrorCode) { if(*ReturnValue != NULL) { SysFreeString(*ReturnValue); *ReturnValue = NULL; } MessageBoxW(NULL, Input, L"引数1", MB_OK); *ReturnValue = SysAllocString(Input); MessageBoxW(NULL, *ReturnValue, L"引数2にコピーした結果", MB_OK); *ErrorCode = 0; return; } 【VBA側】 Declare Sub TestFunc Lib "MyDll.dll" (ByVal InputString As Long, ByRef OutputString As String, ByRef ReturnCode As Integer) 'ボタンクリック時にテスト実行 Private Sub Button1_Click() Dim RCode As Integer Dim TestOutput As String Call GetPCModel(StrPtr("あいうえおわゐうゑを"), TestOutput, RCode) MsgBox TestOutput End Sub としてみると、DLL内部のデバッグ用メッセージボックスはきちんと「あいう えおわゐうゑを」とどちらも表示されるのですが、VBA側の方では「B0D0F0H0J 0・・F0・・」と表示されます。 試しに MsgBox StrConv(TestOutput, vbFromUnicode) としてみると「あいうえお??う??」と表示されてしまいます。 文字コードが違うみたい??です。 どうしてなのでしょう??
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.