VBからVC++で作ったDLLを呼び出し

[戻る]
近藤 2002/07/26(金) 17:31:37
たびたびすいません。近藤と申します。
以前に、”VC++6.0で内部コマンド(DOSコマンド:DIR)をCALLする方法”では
皆様に大変お世話になりました。

今度の質問は、VC++で作成したDLL(内部コマンドが実行する)をVB6.0から呼び出したいのですが
なにも動きません。コンパイルはDLL、VB共に通っているのですが・・・・
下記にソースを載せますので、ご教授願います。

*****VC++6.0ソース*****
<<プログラム名:test.cpp>>

#include "stdafx.h"
#include "test.h"
#include "stdlib.h" 
#include "iostream.h"

BOOL APIENTRY DllMain( HANDLE 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;
}

//int system(const char *string); 

TEST_API int __stdcall fncSub()
{
    cout << "\n    DOSコマンド(Dir)実行です。\n\n\n";
    system("dir");
    return 0;

}

<<プログラム名:test.h>>

#ifdef TEST_EXPORTS
#define TEST_API __declspec(dllexport)
#else
#define TEST_API __declspec(dllimport)
#endif

TEST_API int __stdcall fncSub();

*****VBソース*****
<<プログラム:標準モジュール内に作成>>

Declare Function fncSub Lib "TEST.dll" ()
Sub Main()
    MsgBox ("test")
End Sub

*****その他*****
defファイルの作成(test.def)

LIBRARY TEST.DLL

EXPORTS
 fncSub

全てファイルは、同一フォルダに格納してあります。

wood 2002/07/26(金) 17:44:41
VCからは呼び出せますか
出来るんだったらVBがわの問題で
ここではなくVBラウンジの方がよろしいかとおもいます

dairygoods 2002/07/26(金) 18:00:20
> TEST_API int __stdcall fncSub()

extern "C" が必要のような気がします。


> 以前に、”VC++6.0で内部コマンド(DOSコマンド:DIR)をCALLする方法”では
> 皆様に大変お世話になりました。

解決したのであれば、[解決]チェックしましょう。

近藤 2002/07/26(金) 18:05:55
やってみましたが、やっぱりなにも動きませんでした。
メッセージボックスが起動されるだけです。

YuO [E-Mail] 2002/07/26(金) 22:16:42
fncSubを呼んでないだけでは?

古いスレッドには追加発言できません。