プログラムと政治とオカルトと戯れ言
× [PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。 |
試行錯誤の個人的DLL作成の仕方。(VC6)
文字列を渡す、受ける(参照渡し)
(1)新規プロジェクト->「Win32 Dynamic-Link Library」
(プロジェクト名に適当な名前を記入。例:test)->空のDLL
(2)新規プロジェクト->「C++ ソース ファイル」->
(プロジェクト名に適当な名前を記入。例:test.cpp)
---(test.cpp)---------------------------------V----------------------
#include <windows.h>
#include <stdio.h>
#include <string.h>
extern "C" __declspec(dllexport)
BSTR WINAPI test(LPCSTR a,LPCSTR b){
FILE *fout=fopen("Shellex.txt","w");
fprintf(fout,">%s,%s\n",a,b);
fprintf(fout,">%s",b);
fclose(fout);
return SysAllocStringByteLen(b,strlen(b));
}
----------------------------------------------A----------------------
解説:
--
LPCSTRの他に、LPTSTR有り詳しい説明は調べていない。
--
参照渡し、BSTR WINAPI
値渡し、void WINAPI
--
SysAllocStringByteLen
で文字を渡す。これを使用しない場合、空白になった。
--
(3)新規プロジェクト->「テキストファイル」->
(プロジェクト名に適当な名前を記入。例:test.def)
---(test.def)---------------------------------V----------------------
;test.def :DLL用のモジュール パラメータ宣言
LIBRARY "test"
DESCRIPTION "Dynamic Link Library"
EXPORTS
test @2
----------------------------------------------A----------------------
解説:
関数を以下のように追加していく。
EXPORTS
test @2
fnc1 @3
hoge @4
_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/
以上がVCの記述VBで以下のようにする。
---(form1.frm)---------------------------------V----------------------
Private Sub Command1_Click()
Form1.Caption = Shellex(Text2.Text, Text1.Text)
End Sub
----------------------------------------------A----------------------
---(Module1.bas)---------------------------------V----------------------
Declare Function Shellex Lib "TmShell.dll" _
(ByVal a As String, ByVal b As String) As String
----------------------------------------------A----------------------
値渡し
Declare Function Shellex Lib "TmShell.dll" _
(ByVal a As String, ByVal b As String)
参照渡し
Declare Function Shellex Lib "TmShell.dll" _
(ByVal a As String, ByVal b As String) As String
注意、VBのString型は2バイト。
(ヘッダ、文字列の長さ)|(2バイト・・・)|NULL
PR |