[リストへもどる]
一括表示
タイトルcpxsdkいじくってます
記事No81
投稿日: 2006/04/15(Sat) 04:44
投稿者営々
こんにちは。
cpxsdkダウンロードさせてもらいました。なんとか、コンパイルだけでも出来るようにならないかと試行錯誤中です。アドバイスなどいただければ助かります。

今までほとんど使ったことのないWATCOM C/C++ 11.0を引っ張り出して、cpxsdk.hをインクルードフォルダにコピー、cmn_templete.cppとcmn_templete.defに最低限の改変(cpxGetExtInfoPropの部分とか)を行って、WATCOM C/C++のIDEでMAKEしてみました。

ターゲットは「Win32 DLL」、コンパイラオプション「8bite alignment」「Multithreaded application」を指定しています。

コンパイラのエラーと警告は以下の通り。

>cmn_template.cpp(205): Warning! W379: col(24) 'delete'式は、非仮想デストラクタを起動します
>cmn_template.cpp(356): Warning! W726: col(1) 形式引数'idxItem'は参照されていません
>cmn_template.cpp(356): Note! N392: col(1) 'int idxItem' in 'int stdcall MyCpx::cpxGetFolderDetailItem( int, __2fhou2TExtInfoDetail & )'は定義されています:in: cmn_template.cpp(348) (col 54)
>cmn_template.cpp(356): Warning! W726: col(1) 形式引数'ExtFolderDetail'は参照されていません
>cmn_template.cpp(356): Note! N392: col(1) '__2fhou2TExtInfoDetail & ExtFolderDetail' in 'int stdcall MyCpx::cpxGetFolderDetailItem( int, __2fhou2TExtInfoDetail & )'は定義されています:in: cmn_template.cpp(348) (col 79)

以下、同様に
「参照されています」
「定義されています」
の警告がずらずらと出てきます。
(コンパイラのWarning levelを高くしすぎたのがまずかったんでしょうか?)

>Error! E2028: _IID_IUnknown は未定義参照です

大きなエラーはこれ一つみたいですね。これのせいでリンカもエラーを出しています。

>ファイル cmn_template.obj(E:\sample\cmn_template.cpp): 未定義シンボル _IID_IUnknown

WATCOM C++にはSTLすらないので道は険しいのですが、cpx作ってみたいなぁ…

タイトルRe: cpxsdkいじくってます
記事No82
投稿日: 2006/04/15(Sat) 13:02
投稿者うぇいく   <weyk@nifty.com>
>「参照されています」
# 参照されていません ですよね?
これはたいていの場合、問題ありません。関数などの宣言で、引数にいろいろ宣言されているのに、どこからも参照されて無い場合に出ますが、共通のインターフェースにあわせて開発する場合は、よくあることです。
# Windowsのプログラムを書くと鬼のように出ます。このwarningは出るのを止めてしまっても良いかも。もしくは、「使っていない」ことを明示できるなら、書き換えるのも手です(方法は失念。型のみにして変数名をかかないんでしたっけ?)

>「定義されています」
これは、判りません。どんな状態なのかも判りません。Note!ということなので、警告ですらないですようが。マニュアルを見て自分で判断してください。
# 私はマニュアルを持ってませんので。

なお、WATCOMは、warningのレベルが高いようですので、自分で判断できない場合は、不用意にあげないほうが良いです。
# 正しい可能性もあるからこそ、errorではなくwarning。もちろん、warningが出ないように書き直すのも手ですが、書きなおせない場合もありますから、ほっといてよいのかどうかは自分で判断するしかありません。たいていの場合、マニュアルに原因と対象方法が載っているはずですが、書いてありませんか?(マニュアルを見ていますか?)

>>Error! E2028: _IID_IUnknown は未定義参照です
cmn_templateの最初の方にある、objbase.hの中で読み込まれるヘッダファイル内で定義されていて、最終的にはUUID.libとゆーところへの外部参照になるようです(borland c-builder xの場合)。これらは、WindowsのCOM/COM+関連の機能ですが、コンパイラにそれらの機能が含まれているかどうかを、まず、確認してください。
# いろいろ検索してOpenWATCOMもみつけたんですが、opensourceだからwin関連がぜんぜん入ってないのね。

以下のキーにして、プロジェクトの作成を行ってみてください。
・Windows32DLL
・マルチスレッド
・COM/COM+

WATCOMにこだわらないのであれば、無償配布されているコンパイラで行う方が楽は楽ですね。
Borland C-Builder X
Microsoft Visual C++ 2005 Express Edision(?)
Borland Delphi 6 Personal(?)
# 私はC-Builder X。
-- CMN v0.50aβ --

タイトルRe2: cpxsdkいじくってます
記事No83
投稿日: 2006/04/16(Sun) 12:33
投稿者営々
うぇいくさん、お返事有難うございます。

># 参照されていません ですよね?

そうでしたね。WarningLevelを下げて表示させないようにしました。

>UUID.libとゆーところへの外部参照になるようです

インポートライブラリをご紹介していただいて助かりました。リンカでUUID.libを含めるように指定することで解決しました。

WATCOMのリンカはモジュール定義ファイルも使えないので、エクスポートオプションとして
cpxCreateInstance='_cpxCreateInstance@4'
を指定することで、とりあえずエラーのでないcpxを作成することが出来ました。有難うございます。

これからWATCOM C/C++のオンラインマニュアルを読みつつ色々いじってみるつもります。

タイトルRe3: cpxsdkいじくってます
記事No84
投稿日: 2006/04/19(Wed) 01:58
投稿者DECO
営々さん、こんにちは。

>とりあえずエラーのでないcpxを作成することが出来ました。有難うございます。

>これからWATCOM C/C++のオンラインマニュアルを読みつつ色々いじってみるつもります。

おめでとうございます☆
一度エラーのない状態を作れれば、あとは楽ですねっ。(そうでもない!?)

DECO

タイトルRe4: cpxsdkいじくってます
記事No85
投稿日: 2006/04/26(Wed) 09:01
投稿者営々
うぇいくさん、DECOさん、ありがとうございます。

なんとか、日記鯖CPSと同じ働きをするCPXを作ることができました。
あとはこれを、上から古い発言順に並んでいる状態に対応させれば、日記鯖バックナンバーを取得できそうです。