- - PR -
ネイティブコードのDLLへの参照渡しの方法(文字列型)
«前のページへ
1|2|3
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-02-10 11:30
ほむらです。
また偶然なのですけど こんなページ見つけました。 -------- [HOW TO] Visual C++ .NET で System::String*から char* に変換する方法 #googleキーワード:.NET System::String | ||||||||
|
投稿日時: 2004-02-10 13:43
みなさん、
いろんな情報をありがとうございます。 いろいろ試していたのですが、 GetData()関数を単独でDLLに記述しておくと、 きちんと値を取り出すことができました。 実際は、この関数以外もDLL内に入っているので、 どこかで参照などしてないところがあり、 きちんと動作していないのが原因だったと思います。 #いろいろ考えて頂いて申し訳ありません。m(_ _)m 例えば、ヘッダファイル等を インクルードしている場合は、 (VC++.NET 2002環境での話ですが) 該当Projectの[プロパティページ]-[追加のインクルードディレクトリ]に ヘッダファイル群を参照できるようにしてあげないと、 いけない・・・とか? # ↑これでも動かなかったので、 # まだ何か足りないのだろうか・・・? # それとも検討違いかな?
そうなんですかぁ。 この方法も試してみます。
これも知りませんでした。(−−;) サンプル通りにやってみただけなんですけど。 要らないんですね。 ついでに参照渡しについて、 下記のページを見つけました。 Buffers のサンプル | ||||||||
|
投稿日時: 2004-02-10 14:36
Win32APIっていうレベルの関数ですから。 思ったんですけど、VisualC++(.NETではない)についての開発についての基本的知識が微妙ではないですか? ManagedC++というのはこれらの基礎的知識の上に.NET Framework用の拡張を施したものなので、どうしてもWin32ネイティブの考え方、コーディング等が必要になります。そういう泥臭さをあまり考えたくないならせっかくC#というものも用意されているのですし、そっちを使ったほうがいいと思いますよ(何か事情がありそうですが…)。 [ メッセージ編集済み 編集者: ya 編集日時 2004-02-10 14:59 ] | ||||||||
|
投稿日時: 2004-02-10 18:25
優希です。
そうですねぇ。 あまり詳しくはないです(−−;) できるなら、C#の方が良いのですが、 開発環境はVC++.Netと決まってしまっているので・・・。 頑張るしかないですね。 それで、meiさんのサンプルソースを 真似て作っているところです。 【実施内容】 ライブラリ(Sample.lib)とインクルードファイル(Sample.h)を それぞれ"Lib"、"include"フォルダに格納する。 VC++のメニュー[ツール]→[オプション]の [プロジェクト\VC++ ディレクトリ]の 「ディレクトリを表示するプロジェクト:ライブラリ」で、 先ほどの「Lib」フォルダを追加。 同様に、「include」も追加する。
上記のようにやっていますが、 先程のINIファイルの読み込む関数で 「DllImport」を使っていると、 "メタデータの操作に失敗しました。" とビルドエラーになります。 「DllImport」と「#pragma comment」は 2つ使えないのですか? | ||||||||
|
投稿日時: 2004-02-10 21:31
おんなじ名前の実体が二つ以上あるとリンク段階で当然エラー(どっちを使えばいいかわかりませんし)になります。 libファイルをリンクした段階でその名前を持った関数(DLL側)は実体をもちます。そして、DLLImportAttributeをつけても実体を持つので。 |
«前のページへ
1|2|3