開発環境
OS:WindowsXP SP2
SDK:VisualStudio2005 StandardEdition
言語:VC++
Win32コンソールアプリケーションのDLLを選択
空のプロジェクトを使用
作成したいのはVBなどから呼び出せるWin32DLLです。
他のホームページを参考にして以下のようなファイルを作成し
ビルド->コンパイルしたところdllファイルはできましたが
AccessVBAから参照設定ができませんでした。
どこを修正すればよいか教えてください。
<dlltest.cpp>
#define EX __declspec (dllexport)
#include <iostream>
#include <windows.h>
EX int fnWindowHook(void);
BOOL APIENTRY DllMain(
HMODULE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
switch (ul_reason_for_call){
case DLL_PROCESS_ATTACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
EX int hundred(){
return 100;
}
<dlltest.def>
LIBRARY"dlltest1"
EXPORTS
disp @1
No.3
- 回答日時:
参照設定 ... 事前バインディング
CreateObject/GetObject ... 遅延バインディング
という違いです
どちらも対象はActiveX(COM)です
遅延バインディングの関数名からも分かるように何かのObjectを生成出来ないとこれらを使うことは出来ません
事前バインディングなら
dim obj as myDLLObject
Set obj = new myDLLObject
遅延バインディングなら
dim obj as Object
Set obj = CreateObject( "myDLLObject.Sample" )
といった具合の使い方になります
# CreateObjectの引数は適当です
この回答への補足
大変失礼しました。
参照設定とCreateObjectの違いではなく
参照設定とCreateObjectに対するDLLの作成のしかたの違いが知りたかったのです。
こちらの質問のしかたが悪かったのに「質問の答えにほとんどなっていない」などと言ってしまい、本当にすいません。
ご回答ありがとうございました。
ActiveXという名の拡張子がDLLということですか?
プロジェクトでは何になるのですか?
VisualStudioで作成可能ですか?
回答はありがたいですが、質問の答えにはほとんどなっていないです。
参照のしかたではなく参照できるものを作りたいのです。
No.2
- 回答日時:
参照設定して使いたいなら ActiveXDLL(またはOCX)を作らないといけないでしょう
単にAccesVBAからDeclareで呼び出すのであればWin32DLLでも出来ます
この際きおつけるのは 関数の呼び出し方式が C/C++用の cdeclではなく stdcallに変更することです
外部への公開はするのは defファイルでかまいませんが
ソースを C++(cpp)で書いているのであれば
公開する関数を extern "C" { } でくくる必要も出てきそうです
回答ありがとうございます。
ActiveXとDLLの違いが理解しきれていませんでした。
参照設定でもCreateObjectでも同じなんでしょうか?
extern "C"についてはどこかで見ました。
そのときはdefファイルを使うならいらないとあったので
書いていませんでした。加えてみます。
No.1
- 回答日時:
この辺のサイトを参考にActiveX コンポーネントを作成すれば、VBAから呼び出せると思いますよ。
http://msdn.microsoft.com/en-us/library/ms221375 …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- フリーソフト cygewf-2.dllがない、と表示され、ダウンロードしたファイルが動作しない 2 2023/03/27 11:05
- C言語・C++・C# C++のcinの動作 5 2023/02/26 00:13
- Windows 10 IT初心者です! powershellで以下のようなエラーが出ました オブジェクト参照がオブジェクト 1 2023/05/17 11:30
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- C言語・C++・C# C++のcase文の書き方 4 2023/02/24 20:50
- C言語・C++・C# C++初心者です stirng 2 2022/09/20 20:43
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- ノートパソコン .dllファイルがありませんと表示される 5 2023/04/30 03:03
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VB.NETで他のプロジェクトで作...
-
ソースから参照しているOCXの一...
-
エラーの原因は?「この関数の...
-
コンパイルするときに、ファイ...
-
ACCESSのEXEを作るのは可能...
-
VisualBasicを保存するときにで...
-
Wingdi.h Windows.h を開くには?
-
OLEドラッグ&ドロップ
-
C#のクラスをVB.netで使用したい!
-
VCでストップウォッチを作りた...
-
Visual Studio2008でヘッダファ...
-
stdio.hをオープンできない…
-
Microsoft C Ver5/6の入手方法
-
VB6.0の別名保存について
-
メモ帳から、、、。
-
GrWinの使用方法について
-
同じソースコードなのにバイナ...
-
VB6で、非表示モジュール(?)の...
-
VC++でexeファイルが作成できま...
-
他の.CPPファイルに定義した関...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VB.NETで他のプロジェクトで作...
-
ACCESSのEXEを作るのは可能...
-
VC++でexeファイルが作成できま...
-
他の.CPPファイルに定義した関...
-
ソースから参照しているOCXの一...
-
エラーの原因は?「この関数の...
-
VB6で、非表示モジュール(?)の...
-
VB.NETでActiveX(OCXファイル)作成
-
コンパイルするときに、ファイ...
-
C#のクラスをVB.netで使用したい!
-
プリコンパイル?
-
VS2010 ProductVersion 変更
-
「マージする」とは?
-
VCでストップウォッチを作りた...
-
VisualBasicを保存するときにで...
-
Visual Studioでプロジェクトが...
-
VB6.0 オブジェクトを一覧で表示
-
VC++ 2005 Intellisenseを更新....
-
VB6 exeファイルのプロパティの...
-
sys/ipc.h や sys/shm.h
おすすめ情報