回答編集履歴
1
確認するポイントの追記
answer
CHANGED
@@ -15,4 +15,60 @@
|
|
15
15
|
メニューの[Open Executable]からregsvr32を問題のocxを引数に指定して起動する。
|
16
16
|
仕掛けておいたDebugBreakで停止するのであとはステップ実行して調べる。
|
17
17
|
|
18
|
-
Windbgの使い方が分からない場合はC++でDllRegisterServerを実行するEXEを作成してVisual Studioなどでデバッグする。
|
18
|
+
Windbgの使い方が分からない場合はC++でDllRegisterServerを実行するEXEを作成してVisual Studioなどでデバッグする。
|
19
|
+
|
20
|
+
-----
|
21
|
+
確認するポイントの追記
|
22
|
+
|
23
|
+
タイプライブラリは.idlから生成されます。
|
24
|
+
生成された.tlbファイルは.rcファイル内で
|
25
|
+
1 TYPELIB "MFCActiveXControl1.tlb"
|
26
|
+
のような命令でリソースIDが1として埋め込まれます。
|
27
|
+
|
28
|
+
まずは.idlファイルがなければプロジェクトに追加します。
|
29
|
+
これはもともとのvc6.0のプロジェクト内にあったはずです。
|
30
|
+
プロパティでファイルの種類がidlになっていることを確認します。
|
31
|
+

|
32
|
+
|
33
|
+
次にプロジェクトのプロパティでMIDLの設定を見ます。
|
34
|
+
タイプライブラリが生成する設定になっていることを確認します。
|
35
|
+

|
36
|
+
|
37
|
+
リソースファイルのプロパティでファイルの種類を確認します。
|
38
|
+

|
39
|
+
|
40
|
+
もともとrcファイルに TYPELIBを埋め込む命令が書いてあって
|
41
|
+
.tlbファイルがない場合リソースコンパイラでエラーになるはずです。
|
42
|
+
ですので、.rcファイルも怪しい気がします。
|
43
|
+
.rcファイルをコードの表示で直接開きます。(もしくはメモ帳などで直接開く)
|
44
|
+
|
45
|
+
```
|
46
|
+
//最初のほうに以下のようなブロックがあります。
|
47
|
+
//これは[リソースファイルのインクルード]の[コンパイル時に追加するファイル]
|
48
|
+
//の内容が登録されます。
|
49
|
+
3 TEXTINCLUDE
|
50
|
+
BEGIN
|
51
|
+
"1 TYPELIB ""MFCActiveXControl1.tlb""\r\n"
|
52
|
+
"\0"
|
53
|
+
END
|
54
|
+
|
55
|
+
//終わりのほうに以下のようなインクルードの内容が展開された内容があります。
|
56
|
+
//こちらが実際にリソースコンパイラによって処理される命令です。
|
57
|
+
//これはリソースファイルをGUIから変更すると3 TEXTINCLUDE
|
58
|
+
//の内容をもとに自動生成されます。
|
59
|
+
//これが存在しないような気がします。
|
60
|
+
|
61
|
+
#ifndef APSTUDIO_INVOKED
|
62
|
+
/////////////////////////////////////////////////////////////////////////////
|
63
|
+
//
|
64
|
+
// Generated from the TEXTINCLUDE 3 resource.
|
65
|
+
//
|
66
|
+
1 TYPELIB "MFCActiveXControl1a.tlb"
|
67
|
+
|
68
|
+
/////////////////////////////////////////////////////////////////////////////
|
69
|
+
#endif // not APSTUDIO_INVOKED
|
70
|
+
|
71
|
+
```
|
72
|
+
|
73
|
+
一度ActiveXを作成するプロジェクトを作成して
|
74
|
+
自動で生成されるファイルや設定を見比べてみるといいと思います。
|