DLLの関数呼び出しで引数があるとフリーズしてしまう。
はじめまして、C言語勉強中の初心者です。
現在、DLLに定義されている関数を呼び出すことを試していますが、うまくいかないので質問させて頂きました。
DLLには2つの関数が定義されています。
1.void Hello()
2.void HelloEx(char *pval);
1の関数を呼び出す場合は異常なく終了するのですが、2の関数を呼び出すと、フリーズしてしまいます。
フリーズする原因が分からないので、教えて頂ければと思います。
以下にソースを掲載します。
因みにコンパイラはBCC5.5.1を使用しています。
*****************************************************
DLL(Hello.c) [bcc32 -WD Hello.c]
*****************************************************
#include <windows.h>
#include <stdio.h>
__declspec(dllexport) void CALLBACK Hello(void) {
printf("Hello!\n");
}
__declspec(dllexport) void CALLBACK HelloEx(char *pVal) {
printf("Hello!%s\n", pVal);
}
*****************************************************
EXE(HelloTest.c)[bcc32 -L HelloTest.c]
*****************************************************
#include <windows.h>
#include <stdio.h>
typedef void (*Hello)(void);
typedef void (*HelloEx)(char*);
int main(void) {
HMODULE hMod;
Hello func;
HelloEx funcEx;
hMod = LoadLibrary( "Hello.dll" );
if(!hMod) return FALSE;
func = (Hello)GetProcAddress( hMod, "Hello");
if(!func) return FALSE;
funcEx = (HelloEx)GetProcAddress( hMod, "HelloEx");
if(!funcEx) return FALSE;
func();
funcEx("World");
FreeLibrary(hMod);
return 0;
}
***********************************************
以上
お礼
gerugugu84 さん ありがとうございました。 BladeMP3EncDLL.h 非常に役にたちます。 またよろしくお願いします。