mcrblog

vcpp-ml

2000年09月

30

[vcpp 00046744] Re: DLL の明示的リンクについて

Tietew です。

Sat, 30 Sep 2000 11:40:56 +0900 に
<3...@po.densan-s.co.jp> の
【[vcpp 00046741] Re: DLL  の明示的リンクについて】で
Tadashi Ishikawa <i...@densan-s.co.jp> さんが書かれたことには:

> [vcpp 00046713]および[vcpp 00046719]では、exportされたクラスを*明示
> リンクで*使うことができるのか、という話です。
> で、それを実現する方法は、今のところ判っていません。
すべてのメンバ関数をvirtualにし,newもdeleteもdll側で行わせればいちおう
出来ます。てゆうかCOMってそうやって動いてますし。

*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*
   Tietew   <t...@alice.vip.co.jp>   UIN:39622614
            http://www.masuclub.net/tietew/   Tietew Windows Lab.
   ☆ 鱒倶楽部 ☆ http://www.masuclub.net/
   PGP fingerprint: 96DC CEA5 AF7A AE8B 87A2  23B5 91E5 3255 23E4 4503
*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*
30

[vcpp 00046743] Re: 関数オブジェクトを渡しての、std:: listのソート

ZacKです。

ついでなので もう少し独り言をば。(^^;

大月浩 wrote: [vcpp 00046732]
<2...@pop3.osk.3web.ne.jp>
> それにしても、不思議な実装(不手際?)ですね。

アドホックな結合になるのをきらって、必ず functional ヘッダに定義され
てる述語クラスから派生させたかったのか とも思いましたが(結局、失敗して
ますけど)、それにしても何ゆえ greater からなのでしょうね。

sort に渡す述語オブジェクトは、必ず所定の述語クラスから派生したものに
限定したい、という MS の考え(?)に沿って修正するなら、functional ヘッダ
に定義されてる述語オペレータを全て仮想化して、かつ述語オブジェクトを
パラメータに取ってる箇所を参照渡しにすればうまく行くのでしょうけど、
それをやると変更箇所が大量になりそうです。

で、わたしは VC++ に元々ついてる STL は使ってません。SGI サイトから
提供されてる STL の、しかも機能限定版の方を組み込んでます。
http://www.sgi.com/Technology/STL/

限定版はメンバ関数テンプレートなどを使わない版なので、今回のように list
の sort に引数を渡す機能はないのですが、安定してるので(hash も使えるし)
まあ満足してます。Tietew さんが言われるようにメンバ関数テンプレートに
不安があるなら、こちらを使うという手もあるかもしれません。

# SGI-STL の正式版は(今はもう大丈夫なのかもしれませんが)確か
# basic_string あたりが VC++ の標準ヘッダとぶつかるんですよね。
# 限定版でも MFC の CString と食アタリを起こすのですが^^;、これは
# afx.h, afx.inl のインラインの比較オペレータを __stdcall から
# __cdecl に変えるだけで済みます。ただ限定版の本来の問題として、
# マルチスレッドでコンパイルする場合 alloc.h のグローバル変数の二重
# 定義に対処する必要があるのですが...。
-- 
                                   山崎 正 (ZacK)
                                   mailto:z...@post.co.jp
30

[vcpp 00046742] おくれてすみません

返事を遅れてすみません

そうですか
SDKでもできるんですね
ありがとうございます

後、SDKでプロジェクト管理のエディターを作っているのですが
ちょっと資料が乏しいです
よいWebサイトか書籍しりませんか
30

[vcpp 00046741] Re: DLL の明示的リンクについて

石河@DSKです。

Subject: [vcpp 00046719] Re: DLL の明示的リンクについて
> 明示的にClassをリンク(というよりDllからExportかな)についてですが、
> 以前業務で「クラスの定義のみをインプリメントしたdll」なるものを確か
> 作ったことがあったと思います。。。

クラスをexportしたDLLは出来ますし、使えます。但し、暗黙リンクの場合
ですが。

[vcpp 00046713]および[vcpp 00046719]では、exportされたクラスを*明示
リンクで*使うことができるのか、という話です。
で、それを実現する方法は、今のところ判っていません。

> そして、このdllをリンクさせてダイアログボックスを作成してみました
(snip)
> 結果呼び出しは正常でしたし値もきちんと返ってまいりましたが。

どのようにリンクされたのでしょうか。
明示リンクで動作確認されたのでしたら、その方法を教えて頂けると、
vcpp mlで絶賛の嵐が吹き荒れることは間違いないでしょう。

Tschuess!

 ∧ ∧  ∩「半ばは自己の幸せを、半ばは他人の幸せを」
(・o・)_||
 |     | 石河(was 井島) 正@電算システム
 ∪ ̄∪∪ ̄∪ i...@densan-s.co.jp
  野獣之図
30

[vcpp 00046740] ソケットでのアサーションエラーについて


 ソケット通信のサンプルプログラム CHATTER、CHATSRVR を参考に
サーバー/クライアントのネットワーク通信を検討しています。
サーバーは、通常クライアントからの通信データを受信し、接続されて
いる各クライアントへ正常に配信するのですが、サーバー独自から発信
するとASSERTION ERROR がでて、無視すると、正常に通信されて継続し
ます。
 トレースすると、サーバー側のアーカイブ出力部で起きています

(CHATSRVR の CMsg クラス内)
void CMsg::Serialize(CArchive& ar)
{
if (ar.IsStoring())
{
ar << (WORD)m_bClose;
ar << m_strText;     <- ここ
}
else
{
WORD wd;
ar >> wd;
m_bClose = (BOOL)wd;
ar >> m_strText;
}
m_msgList.Serialize(ar);     <- ここ
}

全く同じルーチンを通過するのに、受信→配信時にはエラーが発生せず、
受信を受けずにサーバー側から単独で配信するとエラーとなる理由が判
りません。
 ちなみに、リリース版でコンパイルした物では、チェックを受けない
ので、正常(そうに)に動作しています。どなたか、同じ様なエラーに
出くわした方はおられませんか?

環境:VCPP6, NT4
記事検索
Amazon.co.jp
  • ライブドアブログ