C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

DllImportについて


(過去ログ 9 を表示中)

[トピック内 19 記事 (1 - 19 表示)]  << 0 >>

■8817 / inTopicNo.1)  DllImportについて
  
□投稿者/ 風影 伍長(56回)-(2006/12/07(Thu) 10:34:35)

分類:[VC++(C++/CLI)] 


分類:[VC++(C++/CLI)] 

度々失礼します。
DllImportなのですがどうしてか上手くいかなくてこまっています。
過去に言われたとおり(言ったとおり)
--------------------------------------------------------------
using namespace System::Runtime::InteropServices;
--------------------------------------------------------------
を追加して以下の様にボタンを呼び出す部分でDLLを呼び出しているのですが「関数内でカスタム属性を使用することはできません。」というエラーが出て困っています。
色々なHPとかを見てもどうしてもわからなくてまた質問しに来てしまいました。
//本体
--------------------------------------------------------------
private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e) {
{
[DllImport("Nicpx_SQL.dll")]
extern bool Initialize();
}
--------------------------------------------------------------
//関数
--------------------------------------------------------------
bool APIENTRY NXSQL_Initialize()
{



}
--------------------------------------------------------------


0
引用返信 編集キー/
■8818 / inTopicNo.2)  Re[1]: DllImportについて
□投稿者/ Blue 少佐(188回)-(2006/12/07(Thu) 10:40:06)

分類:[VC++(C++/CLI)] 

マルチポストはやめてください。
http://www2.moug.net/bbs/program/20061206000003.htm


>関数内で
ということなので、そこには「DllImport」はかけないのでは?

0
引用返信 編集キー/
■8819 / inTopicNo.3)  Re[2]: DllImportについて
□投稿者/ ぽぴ王子 曹長(99回)-(2006/12/07(Thu) 10:48:34)
ぽぴ王子 さんの Web サイト

分類:[VC++(C++/CLI)] 

僕はC++/CLIに関しては門外漢なのですけど、でも質問の仕方とかはわかります。
で、見ているとどうも意外と簡単な部分でつまづいているような感じを受けます
(どの辺が簡単なのかはやっぱり門外漢なのでわからないですが)。

> 色々なHPとかを見てもどうしてもわからなくてまた質問しに来てしまいました。

というレベルだと、ポイントだけを回答してもまたわからなくなって質問するよ
うになってしまうのではないでしょうかね。というか「わからないまま書き散ら
かしたら変になって、調べてみたけど基本がわからないからどうやっていいのか
わからなくなって質問紙にきた」というふうに見えるわけです。おもちゃを分解
したのはいいけど組み立てられなくなって慌ててる風というか。
まずは基礎的なことを書いてある書籍などを購入して、じっくりと勉強していく
のがいいのではないでしょうか。例えばこのへん。

http://www.amazon.co.jp/gp/product/4797336277
http://www.amazon.co.jp/gp/product/4798013889

著者がどこかで見た名前なのは気のせいです :-)

基礎を学ぶことはとても大事なので、もし理解されている内容だったとしても、
もう一度読み直してみるぐらいの感覚で見てみるといいかもしれませんよ。

# って気合入れて書いてきたらマルチポスト…(;′A`)グハァ

0
引用返信 編集キー/
■8820 / inTopicNo.4)  Re[2]: DllImportについて
□投稿者/ 風影 伍長(57回)-(2006/12/07(Thu) 11:41:49)

分類:[VC++(C++/CLI)] 

Blueさん、ぽぴ王子さんお返事ありがとうございます。

> マルチポストはやめてください。
> http://www2.moug.net/bbs/program/20061206000003.htm
質問沢山しているので迷惑かなと思いやったのですが・・・すみません・・・。


> >関数内で
> ということなので、そこには「DllImport」はかけないのでは?
以下のようにしたらDllImportはとおりました・・・。
----------------------------------------------------------------
[DllImport("Nicpx_SQL.dll")]
static bool Initialize();

private: System::Void button4_Click(System::Object^ sender, System::EventArgs^ e) {
{

unsigned int jet = Initialize();
textBox1->Text = "出力値 = " + jet.ToString();

}
-----------------------------------------------------------------
でもエントリーポイントが見つからないと出ているのですがこれはDLL呼び出しの方でbool APIENTRY NXSQL_Initialize()となっているからでしょうか?
私が調べた感じだと//extern "C" __declspec(dllinport)とかく気がするのですが・・・。(余り自信が無くて。)

>基礎を学ぶことはとても大事なので、もし理解されている内容だったとしても、
もう一度読み直してみるぐらいの感覚で見てみるといいかもしれませんよ。

そうですね・・・。
中 博俊さんの本でしたら持っています。(笑)
会社のお金で買ったので私のではないですが・・・。
この仕事に向いてないのか基本だけで頭がパンク気味なので・・・。
色々調べていると・・・難しいですね。(苦笑)


0
引用返信 編集キー/
■8822 / inTopicNo.5)  Re[3]: DllImportについて
□投稿者/ はいこーん 中尉(155回)-(2006/12/07(Thu) 11:59:58)

分類:[VC++(C++/CLI)] 

No8820に返信(風影さんの記事)
> 質問沢山しているので迷惑かなと思いやったのですが・・・すみません・・・。

どのあたりが「ので」になるの?
良識もしくは日本語の方、大丈夫ですか?

0
引用返信 編集キー/
■8823 / inTopicNo.6)  Re[3]: DllImportについて
□投稿者/ Blue 少佐(189回)-(2006/12/07(Thu) 12:03:25)

分類:[VC++(C++/CLI)] 

とりあえず、DllImportでEntryPointを指定してみてはどうでしょうか。
それと、InitializeはLoadLibraryをつかえば関数を呼べるのでしょうか?
(というのは、質問される前に書いておくべき。
何回も質問しているのであれば、それぐらいの作業をやってもらいたいです。)

>unsigned int jet = Initialize();
戻り値が違うのでは。

>extern "C" __declspec(dllinport)とかく気がするのですが
たぶんAPIENTRYで大丈夫なはず。(おそらく__declspec(dllinport)の#define)

0
引用返信 編集キー/
■8824 / inTopicNo.7)  Re[4]: DllImportについて
□投稿者/ 風影 伍長(58回)-(2006/12/07(Thu) 12:13:27)

分類:[VC++(C++/CLI)] 

はいこーんさん、Blueさんお返事ありがとうございます。

>どのあたりが「ので」になるの?
質問沢山しているので、迷惑かなと、思いやった、の、ですが
質問沢山しているので迷惑かなと思いやった「ので」すがの事でしょうか・・・?

>良識もしくは日本語の方、大丈夫ですか?
一応大丈夫のつもりですが・・・。

>とりあえず、DllImportでEntryPointを指定してみてはどうでしょうか。
それと、InitializeはLoadLibraryをつかえば関数を呼べるのでしょうか?
すみません・・・DllImportでEntryPointを指定してみてもエラーは出ますがLoadLibraryをつかえば関数は呼べます・・・。

>戻り値が違うのでは。
boolでしたね・・・でもunsigned intでも成功時は1失敗時はエラーになりますよね・・・?

>たぶんAPIENTRYで大丈夫なはず。(おそらく__declspec(dllinport)の#define)
そうですか・・・。

0
引用返信 編集キー/
■8826 / inTopicNo.8)  Re[4]: DllImportについて
□投稿者/ とっちゃん 伍長(52回)-(2006/12/07(Thu) 12:53:41)
とっちゃん さんの Web サイト

分類:[VC++(C++/CLI)] 

そもそも関数「名」が違うということでは?

Dumpbin なり、Dependency Walker なりで、エクスポート関数「名」を確認した方がよいかと。

でも、素直に .h インクルードして、lib つないだ方が楽のような気がする...
とか書いちゃダメなのか?


0
引用返信 編集キー/
■8828 / inTopicNo.9)  Re[5]: DllImportについて
□投稿者/ Blue 少佐(190回)-(2006/12/07(Thu) 13:02:25)

分類:[VC++(C++/CLI)] 

> でも、素直に .h インクルードして、lib つないだ方が楽のような気がする...
> とか書いちゃダメなのか?
前スレからいっているんだけれどなぁ。。。

ただ、どうも、DLLを作っている人がTCHARを理解していないらしく、
.h に LPTSTR 型とかでてくるらしい。
んで、DLLはMBCSでビルドして、アプリ側はUNICODEでビルドしていると。

まぁ、責任は完全にDLLを作った人にありますけれど。

前スレ:http://f57.aaa.livedoor.jp/~jeanne/bbs/faq.cgi?mode=al2&namber=8565


TCHARについての参考サイト
Unicode対応プログラミング
http://www.ruche-home.net/program/tips/tchar.php

0
引用返信 編集キー/
■8831 / inTopicNo.10)  Re[5]: DllImportについて
□投稿者/ 風影 伍長(59回)-(2006/12/07(Thu) 13:08:00)

分類:[VC++(C++/CLI)] 

とっちゃんさん
> そもそも関数「名」が違うということでは?
そうでした・・・ヘッダーの関数を書いていました・・・。
defの関数ではなく・・・無事Trueが着ました。
大変お騒がせしました。
それと沢山の不手際ごめんなさい、無事解決しました。

> でも、素直に .h インクルードして、lib つないだ方が楽のような気がする...
> とか書いちゃダメなのか?
方法としてありなのでしょうけどプログラムのみという指定なので・・・。

0
引用返信 編集キー/
■8833 / inTopicNo.11)  Re[6]: DllImportについて
□投稿者/ Blue 少佐(192回)-(2006/12/07(Thu) 13:13:17)

分類:[VC++(C++/CLI)] 

2006/12/07(Thu) 13:18:08 編集(投稿者)
2006/12/07(Thu) 13:15:22 編集(投稿者)

>> そもそも関数「名」が違うということでは?
>そうでした
( ´-`)・・・

>>それと、InitializeはLoadLibraryをつかえば関数を呼べるのでしょうか?
>すみません・・・DllImportでEntryPointを指定してみてもエラーは出ますがLoadLibraryをつかえば関数は呼べます・・・。
このやり取りの中で、

GetProcAddressで指定している文字列とEntryPointで指定している文字列は一緒なのか?

というのを聞いているつもりだったのだが。

GetProcAddressってDefファイルの内容で持ってきているんじゃなかったんでしたっけ?

0
引用返信 編集キー/
■8834 / inTopicNo.12)  Re[7]: DllImportについて
□投稿者/ Blue 少佐(193回)-(2006/12/07(Thu) 13:17:44)

分類:[VC++(C++/CLI)] 

2006/12/07(Thu) 13:18:21 編集(投稿者)

> GetProcAddressってDefファイルの内容で持ってきているんじゃなかったんでしたっけ?

<MSDN>
GetProcAddress

ダイナミックリンクライブラリ(DLL)が持つ、指定されたエクスポート済み関数のアドレスを取得します。

解説
GetProcAddress 関数を使って、DLL 内のエクスポート済み関数のアドレスを取得します。

lpProcName が指す関数名のつづり( 大文字と小文字を区別します)は、DLL の作成に使った
モジュール定義ファイル(.DEF ファイル)の EXPORTS ステートメントで記述した名前と同じ
でなければなりません。
</MSDM>

0
引用返信 編集キー/
■8836 / inTopicNo.13)  Re[7]: DllImportについて
□投稿者/ 風影 軍曹(60回)-(2006/12/07(Thu) 13:20:19)

分類:[VC++(C++/CLI)] 

Blueさん、おへんじありがとうございます。
> >> そもそも関数「名」が違うということでは?
> >そうでした
> ( ´-`)・・・
>
> >>それと、InitializeはLoadLibraryをつかえば関数を呼べるのでしょうか?
> >すみません・・・DllImportでEntryPointを指定してみてもエラーは出ますがLoadLibraryをつかえば関数は呼べます・・・。
> このやり取りの中で、
>
> GetProcAddressで指定している文字列とEntryPointで指定している文字列は一緒なのか?
>
> というのを聞いているつもりだったのだが。
>
> GetAddressProcってDefファイルの内容で持ってきているんじゃなかったんでしたっけ?

機転が利かなくて本当にすみません・・・。
言葉の意味をそのまま解釈だけしてしまいました・・・。
頭の中でInitializeという単語で一杯で前に付く単語を忘れていました。
本当にすみません・・・。

0
引用返信 編集キー/
■8837 / inTopicNo.14)  Re[8]: DllImportについて
□投稿者/ 風影 軍曹(61回)-(2006/12/07(Thu) 13:21:27)

分類:[VC++(C++/CLI)] 

No8836に返信(風影さんの記事)


解決済み
引用返信 編集キー/
■8838 / inTopicNo.15)  Re[6]: DllImportについて
□投稿者/ とっちゃん 伍長(54回)-(2006/12/07(Thu) 13:24:50)
とっちゃん さんの Web サイト

分類:[VC++(C++/CLI)] 

No8828に返信(Blueさんの記事)
>>でも、素直に .h インクルードして、lib つないだ方が楽のような気がする...
>>とか書いちゃダメなのか?
> 前スレからいっているんだけれどなぁ。。。
>
あ、つながってるのか。道理で話が半分しか見えないわけだw


> ただ、どうも、DLLを作っている人がTCHARを理解していないらしく、
> .h に LPTSTR 型とかでてくるらしい。
> んで、DLLはMBCSでビルドして、アプリ側はUNICODEでビルドしていると。

アプリ側を合わせるのが本筋なら(DLLが自社製ではないなど)、ラッパーかますか、ヘッダー書き換えるかってあたりが、妥当ではないかとw

ラッパー作って自分でマーシャルするなんてのは、C++ で Windowsアプリ書いてれば普通のことだと思ってたんですが、最近はそうじゃないのかなぁ...w


0
引用返信 編集キー/
■8839 / inTopicNo.16)  Re[5]: DllImportについて
□投稿者/ ぽぴ王子 准尉(100回)-(2006/12/07(Thu) 13:43:30)
ぽぴ王子 さんの Web サイト

分類:[VC++(C++/CLI)] 

どこのツリーにぶら下げたらいいんだろう

> >どのあたりが「ので」になるの?
> 質問沢山しているので、迷惑かなと、思いやった、の、ですが
> 質問沢山しているので迷惑かなと思いやった「ので」すがの事でしょうか・・・?

マルチポストがなぜ「やめてください」と言われるのかを理解していないとコミュ
ニケーションが取れないのではないでしょうかね。
どぼん!さんの「書き込みのマナーについて」が参考になると思います。
http://dobon.net/vb/bbs/index.html

まず発端。

> > マルチポストはやめてください。
> > http://www2.moug.net/bbs/program/20061206000003.htm
> 質問沢山しているので迷惑かなと思いやったのですが・・・すみません・・・。

ここで「迷惑かなと思い」とあるわけですけれども、迷惑かなと思ったのであれ
ばマルチポストは止めるべきでしょう。
「質問沢山している」ことよりも「マルチポストをする」ことの方が実は迷惑だっ
たりします。
例えばこちらでBlueさんが回答してくださっていることは、モーグの方達はご存
知ありません。そこで一生懸命調べて、回答できたよーと書いてみたら実はこち
らで既に回答済みで、そんなの要らんわボケ!ということになったとしたら、そ
の回答者に対してとても失礼なことになるのではないでしょうか。
そういったこともあって、マルチポストはあまりよい印象は与えません。

はいこーんさんの

> どのあたりが「ので」になるの?
> 良識もしくは日本語の方、大丈夫ですか?

の「良識」はここを指しています。そして良識が大丈夫だったとした場合、マル
チポストという迷惑行為を「質問沢山しているので」なる理由で払拭できるもの
ではない、日本語を正しく理解できていますか?という意味ですね。

モーグの方は削除されたようですが、上記のような理由で「調べていたら質問が
削除されてしまった!俺の調査の時間をどうしてくれる!」という意味でもやは
り迷惑行為かもしれません。削除しなくてもマルチポストなのでやっぱり迷惑で
はありますけど。

(ここで一服)

私が書いた

> まずは基礎的なことを書いてある書籍などを購入して、じっくりと勉強していく
> のがいいのではないでしょうか

は、わからないまま質問する前にキチンと調べて勉強してからわからないところ
を質問するようにすれば、回答者の皆さんの貴重な時間を無駄にしないのではな
いかしら?という意味をこめて書いてみたのですけど、この流れを見る限りはも
う少しキチンと書いたほうが良かったかもしれないですね。

他の方はどうなのかまではわかりませんが、自分が回答する場合は質問者の方が
僕の回答を得ることによって問題が解決するだけでなく、考える力が身について
ほしい、もっとレベルアップして質問するだけのレベルから回答できるぐらいの
レベルになってほしい、という気持ちをこめて回答しています。
なので「わからないから聞けばいいや」とか「なんかわかんないけど怒られたか
ら謝っておけばいいや。サーセンwww」とかそういった質問者にはあまり回答したく
ないというのが本音です。

風影さんのこれまでの質問を見ていると
 わからない→質問→回答→やってみたけどわからない→質問
の無限ループにおちいっている気がしたので
 わからない→質問→回答→やってみたけど動かない→わからないところを調べてみよう→勉強になった!
という流れでやってほしい、ということなんですよ。
だから本の話もしたし、わからないから質問じゃなくて自分でできるところはやっ
てみるべきということを書いたつもりなのだけど、伝わって…な…い……?

うまく伝えられなかった自分が悪いのかも。

0
引用返信 編集キー/
■8840 / inTopicNo.17)  Re[6]: DllImportについて
□投稿者/ 風影 軍曹(62回)-(2006/12/07(Thu) 14:07:25)

分類:[VC++(C++/CLI)] 

ぽぴ王子さん、とっちゃんさん、Blueさんお返事ありがとうございます。

>最近はそうじゃないのかなぁ...w(とっちゃんさん)
どうなのでしょう・・・。

>マルチポストについて
そうですね・・・。
小さな所にこだわり?過ぎてたのかもしれません・・・。

>自分でできるところはやってみるべきということ
やってはいるのですが・・・1度此処と考えたら動かさないのが原因ですね・・・。(DllImportの置き場といい猪の様に・・・。)
ちょこっとですむ場所が気が付かないのですよね。
見間違いとかもあるのでしょうけど・・・。

理解力が足りませんね・・・。


0
引用返信 編集キー/
■8841 / inTopicNo.18)  Re[7]: DllImportについて
□投稿者/ 風影 軍曹(63回)-(2006/12/07(Thu) 14:10:26)

分類:[VC++(C++/CLI)] 

本当に申し訳ないです・・・。
(解決ボタン押し忘れました)

解決済み
引用返信 編集キー/
■9330 / inTopicNo.19)  Re[7]: DllImportについて
□投稿者/ 匿名 二等兵(4回)-(2006/12/19(Tue) 12:32:45)

分類:[VC++(C++/CLI)] 

No8840に返信(風影さんの記事)
> >マルチポストについて
> そうですね・・・。
> 小さな所にこだわり?過ぎてたのかもしれません・・・。

やっぱり、日本語も良識もダメそう。

0
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -