質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

DLL

DLL(Dynamic Link Library)とは、他のモジュールからも使用する事が出来る、関数とデータが格納されているモジュールのことです。

Q&A

解決済

2回答

1152閲覧

VC6++で作成したDLLをVB6で使用したい

退会済みユーザー

退会済みユーザー

総合スコア0

VB

VB(ビジュアルベーシック)はマイクロソフトによってつくられたオブジェクト指向プログラミング言語のひとつで、同社のQuickBASICが拡張されたものです。VB6の進化版といわれています。

DLL

DLL(Dynamic Link Library)とは、他のモジュールからも使用する事が出来る、関数とデータが格納されているモジュールのことです。

0グッド

0クリップ

投稿2019/09/02 05:08

VC++で以下のコードでDLLを作成しました。

#include "stdafx.h" BOOL APIENTRY DllMain( HANDLE hModule, DWORD ul_reason_for_call, LPVOID lpReserved ) { return TRUE; } void __declspec(dllexport) __stdcall GetLS(BOOL* licence_enabled) { *licence_enabled = TRUE; }

このDLLの関数「GetLS」をVB6で使用したくVB6の「プロジェクト」「参照設定」「参照」で参照可能なライブラリに追加しようとしたところ「指定されたファイルへの参照は登録できません」ダイアログが出てしまいます。
VB6でなにか設定が必要なのか、そもそもDLLの作り方に問題があるのか。
アドバイスをお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Public Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long
call api
some maybe is cdecl ,not stdcall

投稿2023/06/13 06:09

xiaoyaovb6

総合スコア5

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

VC++で作ったDLLをVB6から参照設定するには、DLLがCOMで作られていなければいけなかったと思います。
COMでないなら、Win32APIを利用するときのようにDeclareで関数を定義してやらないといけないはずです(ちょっとうろ覚え)。

VB6とVB.NETのAPI宣言(Declare)の違いを
比較したサンプル

の情報が参考になると思います。

投稿2019/09/02 05:39

KoichiSugiyama

総合スコア3041

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/09/02 07:00

VB6のコードに「Private Declare Sub GetLS Lib "IIPLC.dll" (ByVal ls As Boolean)」と追加してみたらコンパイルまでは進みました。 別件でエラーが出ちゃってるので完成はしていませんが参考になりました。 ありがとうございます。
YAmaGNZ

2019/09/02 07:22

DLL側はdefファイルでエクスポートの設定をする必要があるかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問