No.2ベストアンサー
- 回答日時:
>cl dll.c /LD
リンク間違えている…というワケではないみたいですね。
https://msdn.microsoft.com/ja-jp/library/cc42909 …
より、
>DllMain は、ライブラリ定義の関数名です。以前のバージョンの SDK のドキュメントは、エントリポイント関数名を DllEntryPoint と記述していました。開発者が独自の DLL を構築する場合は、実際に使う名前を指定しなければなりません。詳細については、開発ツールのドキュメントを参照してください。
ということで、VC系ではDllEntryPoint()ではなくDllMain()である必要があるようです。
リンクされるスタートアップ処理からコールされるのがVCだとDllMain()だけでDllEntryPoint()はコールしてくれないのでしょう。
Borland C++は少々古いはずなので、DllEntryPoint()でコールするようにライブラリが作られている…。ってところでしょうかね。
https://msdn.microsoft.com/ja-jp/library/f9t8842 …
でリンカにエントリポイントの関数名を指定するか…
DllEntryPoint()をコールするだけのDllMain()を追加するか…でしょうかね。
No.1
- 回答日時:
返答ありがとうございます
コンパイル方法:
cl dll.c /LD
cl main.CPP
<dll.c>の抜粋:
#define EXPORT __declspec(dllexport)
EXPORT int TestFunc( int a, int b ) {
return( a + b );
}
BOOL DllEntryPoint(HINSTANCE hInstance, DWORD fdwReason, LPVOID *lpvReserved){
{
switch (fdwReason){
case DLL_PROCESS_ATTACH:
Beep( 440, 200 ); // ド
printf("DLL_PROCESS_ATTACH\n");
break;
case DLL_PROCESS_DETACH:
Beep( 440, 200 ); // ド
printf("DLL_PROCESS_DETACH\n");
break;
case DLL_THREAD_ATTACH:
Beep( 440, 200 ); // ド
printf("DLL_THREAD_ATTACH\n");
break;
case DLL_THREAD_DETACH:
Beep( 440, 200 ); // ド
printf("DLL_THREAD_DETACH\n");
break;
}
return TRUE;
}
}
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) Pythonの作業環境・作業フォルダの迅速な設定・指定方法 3 2022/04/01 07:55
- その他(プログラミング・Web制作) FORTRAN77の配列(除算) 2 2023/02/01 14:34
- その他(プログラミング・Web制作) IT初心者です 仕事で、vb.netで作成されたdllをvbaで呼び出すプログラムを作成しろと言われ 1 2023/03/27 08:22
- XML エクセルのマクロについて教えてください。 3 2023/02/06 09:06
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- 日本語 呼び方を知りたい ある事柄(A)についての本を読んでいて、全く本筋とは異なるが、気になる情報(B)が 5 2023/08/24 22:13
- Excel(エクセル) Indirect関数について、Formulatextで抽出した数式を参照したい。 1 2022/12/15 11:16
- その他(OS) raspberry pi のスピーカ音出ない問題 2 2022/07/24 09:03
- C言語・C++・C# Switch向けにpcでc言語でゲームを作っているのですが、開発環境はWindows10のvisua 1 2022/04/02 07:04
- 会社・職場 呼び出しが多い私…。 転職してからというもの私だけ呼び出しが多いんですよね…。 私には、何かあるので 4 2022/11/23 19:59
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Makefile作成時の拡張子.oとは?
-
ILSpyで、デコンパイルできない。
-
VBAを何回も作り直して、容量が...
-
C言語でヘッダファイルにグロー...
-
1 つ以上の複数回定義されてい...
-
エクセルVBAではRound...
-
<math.h>があるのにsqrtが・...
-
「fatal error C1189」を回避す...
-
【VC++6.0(MFC)】警告「LINK : ...
-
デコンパイル?について
-
[c++] <pthread.h>がinclude で...
-
コンパイルができない!?
-
CUDAのプログラムを実行できません
-
” OS ビルド ” の意味が分か...
-
セミコロンについて
-
C++プログラムにおけるexeファ...
-
C#のコマンドラインの分割コ...
-
外部シンボル "_main"は未解決です
-
定義位置を表示が出来ない?
-
コンパイル??
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAを何回も作り直して、容量が...
-
<math.h>があるのにsqrtが・...
-
” OS ビルド ” の意味が分か...
-
1 つ以上の複数回定義されてい...
-
「fatal error C1189」を回避す...
-
ILSpyで、デコンパイルできない。
-
Makefile作成時の拡張子.oとは?
-
エクセルVBAではRound...
-
C言語でヘッダファイルにグロー...
-
外部シンボル "_main"は未解決です
-
セミコロンについて
-
マクロ コンパイルがグレーバック
-
戻り値について
-
C言語でmからnまでの合計を求め...
-
C++コンパイル時に『 C1083: in...
-
コンパイルエラー:ユーザ定義...
-
クリティカルエラー Expressio...
-
PRO*C コンパイルエラー
-
[c++] <pthread.h>がinclude で...
-
【VC++6.0(MFC)】警告「LINK : ...
おすすめ情報