mcrblog

vcpp-ml

1999年11月

30

[vcpp 00035192] VBからのDLL呼び出し

アランです。
なんかいっつも質問してるのにお礼しなくてすいません。
みなさんありがとう。
で、また質問です・・。

DLLについてです。
VC++側で作ったDLLをVBで呼び出せるのかなぁと思って、
ためしに、VCで

#define EXPORT __declspec(dllexport)

EXPORT void msg(HWND hwnd)
{
MessageBox(hwnd, "test", "test", MB_OK);
}

ってな感じでDLL(ファイル名test.dll)を作成して、VB側で
Public Declare Sub msg Lib "test" (ByVal hwnd As Long)
としてみたんですが、「エントリtestが見つかりません」
とか言われて出来ませんでした。
それで、なんとなく最初のところを
#define EXPORT extern "C" __declspec(dllexport)
としてみたら、なぜかメッセージボックスは表示できたんですが、
その後「正しく呼び出せません」って言われてしまうんです。
一体どうなってるんでしょう??
っていうか__declspec(dllexport)とはどういう意味なんですか?

・・・あ、質問多くなってすいません。
はっきり言ってDLLって何なのかってとこからしてよく分かってないんすよね・・。
とりあえず、VBからVC側で作ったDLLを呼び出す一連の方法を教えてほしいです。
では、よろしくです。

------------------------
Aran
mailto:a...@linux.fan.fm
------------------------
30

[vcpp 00035191] Re: 白黒2色の画像を表すクラスを作るには?

こんにちわ、池内と申します

 結局どうあがいても出来そうになかったので
stlのiteratorを使用してクラスを作りました。

ソースコードは2、3日したらココで公開しておきます。
http://demo.and.or.jp/gtl/


以上。
--
Hideo Ikeuchi
Demo Mod Otaku 古戦場 http://demo.and.or.jp/
E-mail                i...@and.or.jp
30

[vcpp 00035190] Re: STLのmapのinsertでコンパイルエラー

こんにちわ、池内と申します

<1...@gw.zeus.jsdlab.co.jp> の、
   "[vcpp 00035183] STLのmapのinsertでコンパイルエラー" において、
   "赤塚 慶 <k...@jsdlab.co.jp>"さんは書きました:


>   list<Cell*>::iterator iter_x;
>   list<Cell*>::iterator iter_y;

>   map<list<Cell*>::iterator,list<Cell*>::iterator> interaction_map;

mapに挿入するには大小の比較ができる必要がありますが、list<_T>::iteratorは
大小の比較ができないのでmapで扱うことはできないんじゃないかと・・・

以下はiteratorを比較するコードですがコンパイル出来ません。
--- ココから ---
#include<list>
using namespace std;
int main(int argc, char* argv[])
{
list<int>::iterator it1, it2;
if(it1<it2)
{
}
return 0;
}
--- ココまで ---


解決策としてはiteratorをラップしてはどうでしょうか??

--- ココから ---
#include<list>
#include<map>
using namespace std;

template<class _T>
class wrap_iterator{
private:
_T::iterator m_iterator;
public:
wrap_iterator(_T::iterator i):m_iterator(i){};
bool operator<(const wrap_iterator&x)const{
return this<(&x);//適当にアドレスで比較する。
};
};

int main(int argc, char* argv[])
{
typedef map<wrap_iterator<list<int> >, wrap_iterator<list<int> > > my_map;
list<int>::iterator row_iter;
list<int>::iterator col_iter;

my_map interaction_map;
interaction_map.insert(
my_map::value_type(wrap_iterator<list<int> >(row_iter), 
wrap_iterator<list<int> >(col_iter))
);

return 0;
}
--- ココまで ---


ついでに、map::insert()には下記の3つのバージョンがありますが、
私が示したサンプルでは1番目のバージョンを使用しています。
1:pair<iterator, bool> insert(const value_type& x);
2:iterator insert(iterator it, const value_type& x);
3:void insert(const value_type *first, const value_type *last); 
    

NT4.0 VC++6.0 SP3 で試しました。
--
Hideo Ikeuchi
Demo Mod Otaku 古戦場 http://demo.and.or.jp/
E-mail                i...@and.or.jp
30

[vcpp 00035189] ORACLEのSQLスクリプト実行について

お世話になります。
C++とOCI(Oracle Call Interface)を使ってSQL
スクリプトが保存されているファイルを読み込んで実行
するアプリケーションを作っています。
(エクスプローラの形式でファイルを選択して実行ボタン
を押すとORACLEへのログオンダイアログが表示され
ユーザ名/パスワード/ホスト文字列を入力します。
これらを入力してOKボタンを押すとスクリプトファイル
を読込みOCIに渡しています。)
DDL文などの実行はうまくいくのですが、プロシージャ
(Create Procedure/Function)などのスクリプトフ
ァイルを実行するとアプリケーションエラーで落ちてしま
います。
SQLスクリプトファイルを読込み実行する方法をご存
知の方がいらっしゃったらその方法をお教えください。
VCに直接関係ありませんが、宜しくお願いいたします。
OCIについての書籍などの情報も頂けたらうれしいです。

川野
30

[vcpp 00035188] Re: STLのmapのinsertでコンパイルエラー

中村です。

At 1999/11/30 18:56:23 赤塚 慶 wrote:
>   list<Cell*>::iterator row_iter = (*row_list)->begin()
>   list<Cell*>::iterator col_iter = (*col_list)->begin();

>   interaction_map.insert(row_iter,col_iter);
interaction_map.insert(make_pair(row_iter, col_itr));

or

interaction_map.insert(map<list<Cell*>::iterator,list<Cell*>::iterator>::v
alue_type(row_iter, col_iter));

etc..


---
Satoshi Nakamura <s...@kiwi.ne.jp>
記事検索
Amazon.co.jp
  • ライブドアブログ