visualC++初心者のHSP3用DLL作成日記文字列編

今日は文字列を扱います
警告がエラーになってて動かないので
警告を無視しますw本当はダメなんすけどね

プロジェクトプロパティで:プロジェクト右クリック → プロパティ
C/C++ → プリプロセッサ → プリプロセッサ定義 に追加:
_CRT_SECURE_NO_WARNINGS
適用 → OK → 再ビルド

//dllmain.cpp
#include <windows.h>
#include "hsp3plugin.h"

// extern "C" で名前修飾なし、__declspec(dllexport) でエクスポート
extern "C" __declspec(dllexport) int __stdcall add(int a, int b) {
return a + b;
}

extern "C" __declspec(dllexport) int __stdcall mul2(int a) {
return a * 2;
}
// 新しい関数: 2つの文字列を連結する
extern "C" __declspec(dllexport) void __stdcall concat(char* s1, char* s2) {
strcat(s1, s2); // s2を追加
return;
}
BOOL APIENTRY DllMain(HMODULE hModule, DWORD ul_reason_for_call, LPVOID lpReserved) {
return TRUE;
}

AIのエーさんは文字列演算も返す方針だったんすけど
上手くいかなくて
試しに引数演算にしたら動きました

ツール→コマンドライン→開発者コマンドプロンプト
cd C:\hsp3dll\TestHspDll\TestHspDll\Release
とかでフォルダ移動して
dumpbin /exports TestHspDll.dll
で命令が3つ表示されてればOK

#uselib "TestHspDll.dll"   ; DLL名そのまま
#cfunc add "_add@8" int,int     ; ← dumpbinの名前を""で指定
#cfunc mul2 "_mul2@4" int
#func concat "_concat@8" var,str  ; ← 新しい関数登録(str型指定)
; テスト
mes add(15, 27)     ; 42
mes mul2(100)       ; 200
sdim s1,256
sdim s2,256
s1 = "abc";
s2 = "def"
concat s1,s2
mes s1
stop

先日はvisualC++の操作が多かったんですが
今日は大体操作してるんで少なめw
ではでは

AIサポートGrok様 2025/12

コメント

タイトルとURLをコピーしました