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

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

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

全過去ログを検索

<< 0 >>
■51841  cygwinで作成したdllをVisualStudioで利用
□投稿者/ デザパタ -(2010/07/22(Thu) 11:50:24)

    分類:[C/C++] 

    2010/07/22(Thu) 11:54:27 編集(投稿者)

    いつもお世話になっています。

    Winanthyのようなanthyを利用したWindowsアプリを作成したいと考えています。
    すでにWinanthyがあるじゃないかと意見はもっともですが、いくつかの勉強を兼ねていますのでそっとしといてください。
    cygwinで作成したdllをVisualStudio(のCコンパイラ)で利用したいと考えています。
    Winanthy(http://www.kmc.gr.jp/proj/winanthy/)のプログラム内に収められている
    cyganthy-0.dllとかです。

    http://www.sixnine.net/cygwin/translation/faq/faq_3.html#SEC99
    を参考にlibファイルを作成し、リンクすることはできましたが、実行時にエラーが出ます。
    エラーの詳細はつかめていません。
    リンク先の関数を呼ぶとtidtable.cでアクセス違反が起きます。
    作成しているプログラムではthreadを使っています。

    考えられる原因があれば教えてください。そもそもこのような手法は不可能なのでしょうか。
    よろしくお願いします。

    確認していること。
    ・impdef cyganthy-0.def cyganthy-0.dll
    でdll→def作成(def内で関数名が出力されていることを確認しました)
    ・lib /DEF:cyganthy-0.deff /MACHINE:X86 /out:cyganthy-0.lib
     でlibを作成しました。
    ・プロジェクトファイルのあるフォルダにlibを配置
    ・プロジェクトのプロパティ→構成プロパティ→リンカ→入力→追加の依存ファイルに$(InputDir)\cyganthy-0.libを追加
    ・コンパイル及びリンクできることを確認
    ・cyganthy-0.dllやcygwin1.dllをプロジェクトフォルダに配置
    (どこに配置すればよいか迷ったので、念のため、パスの通ったシステムフォルダ、実行ファイルのあるフォルダ、プロジェクトファイルのあるフォルダなど全てに上記dllを配置)

    #分類を修正しました
親記事 /過去ログ87より / 関連記事表示
削除チェック/

■86720  Re[1]: oo4oからodp.netへの変換
□投稿者/ 魔界の仮面弁士 -(2018/03/02(Fri) 22:34:30)
    2018/03/02(Fri) 22:41:49 編集(投稿者)

    No86717 (yuuki さん) に返信
    > VB6⇒VB.NETへのコンバージョンについてご相談させていただきます。

    WinForm への画面表示や編集(DataGridView等)を伴うなら、
     1: System.Data.OracleClient 名前空間
     2: Oracle.DataAccess 名前空間
     3: Oracle.ManagedDataAccess 名前空間
    のいずれかを用いて、DataSet を通じて編集・更新することが多いです。
    (3 を推奨 / 1 は非推奨)


    一方、集計処理やバッチ処理といったものであれば、DataSet はあまり使われず、
    DataReader と Command を使う機会が増えます。


    > データベースアクセスがoo4oからodp.netへ変換しないといけません。
    ODP.NET / ADO.NET は、『非接続型』というアプローチを取っています。下記参照。
    http://otndnld.oracle.co.jp/easy/dotnet/oo4otoodp/

    その意味において、ODP.NET(あるいは ADO.NET)の設計思想に近いのは
    oo4o よりもむしろ ADODB の方です。

    DataSet / DataTable および DataAdapter を通じた取得と更新という考え方は、
    ADODB の「オフライン Recordset」「リシェイプ」「バッチ更新モード」に
    近いところがあるのですが、oo4o には該当する機能が無かったはず…。


    > odp.netのクラスに機械的に変換すれば全く可能であることはわかっているのですが、
    ODP.NET には、OO4O の「編集可能な OraDynaset」に該当する物がありません。

    ODP.NET/ADO.NET で DataSet を通じてバッチ更新する処理は、
    オプティミスティックな更新となります。


    > OraDynaset ⇒ OracleDataReader
    「DataReader」の文字通り、これは ORADYN_READONLY かつ ORADYN_NOCACHE な OraDynaset に相当するものです。
    OracleDataReader を通じて AddNew/Edit/Update することはできないのでご注意ください。


    > ラッピングクラスを作成すれば、
    個人的には、ラッピングはあまりお奨めしていません。

    RDO / DAO / ADODB / OO4O の場合は、アーキテクチャが似ているので
    相互にラッピングしやすいですが、 ODP.NET / ADO.NET のアーキテクチャは
    OO4O のものとは考え方が異なるので、差異を把握した上で実装しないと
    VB6 時代の作られ方に引きずられることになってしまい、
    ODP.NET / ADO.NET らしい書き方を阻害してしまう危険性があるためです。

    たとえば、DataAdapter や TableAdapter は、ODP.NET / ADO.NET で良く使われるものであり、
    VB6 で言う所の DataEnvironment に相当する機能と言えるのですが、
    oo4o にはこれに相当する機能が無いため、もしもラッピングするのであれば、
    本来の機能を阻害することがないようなクラス設計を施さねばなりません。


    それゆえ個人的には、ラッピングして処理を内包してしまうのではなく、
    基本的には ODP.NET をそのまま用い、それを手助けするためのヘルパーを用意したり、
    拡張メソッドで互換機能を構築することをお奨めしておきます。


    なお、拡張メソッドで ADO.NET / ODP.NET を機能拡張するという手法は、
    System.Data.Linq 名前空間や Dapper 名前空間などで採用されています。


    > OraSessionClass ⇒ OracleConnection
    > OraDatabase ⇒ OracleConnection
    ODP.NET はコネクションプーリングが既定で有効になっているので、
    この部分はまとめてしまっても問題は無さそうです。

    ただ、OraSessionClass での BeginTrans と
    OraDatabase での BeginTrans を区別している場合には
    トランザクションの管理単位を見直す必要があるかもしれません。


    > OraSessionClassとOraDatabaseは何となく想像がつくのですが、OraDynasetのFields辺りのデータ取得の部分のイメージがわかないです。
    OracleDataReader からだと、Item プロパティ や Get型名 メソッドあたり。

    DataSet / DataTable からだと、DataRow クラス の
    ItemArray プロパティ / Item プロパティ、Field(Of ) 拡張メソッド / SetField(Of ) 拡張メソッド。
    DataViewRow の場合は、そのままインデクサでアクセスすれば OK。

    データではなく列情報のことだとしたら DataTable の Columns プロパティが相当しますが、
    これは Oracle 側の型情報ではなく.NET 側に取り込んだ後の情報となります。
    サーバー側のスキーマを得たい場合は OracleDataReader の GetSchemaTable メソッドか
    OracleConnection の GetSchema メソッドで得ることができます。
記事No.86717 のレス /過去ログ149より / 関連記事表示
削除チェック/

■97670  Re[1]: soap通信を行うクライアントにてbasic認証を行いたい
□投稿者/ 魔界の仮面弁士 -(2021/06/23(Wed) 20:32:43)
    No97634 (mofuramei さん) に返信
    > サーバ[https://github.com/mofuramei/test_asmx_soap.git]
    > クライアント[https://github.com/mofuramei/test_soap_client.git]

    ソースを目視しただけで、試してはいませんが…
    ウチだと、こんな感じで通しています。


    // using System;
    // using System.ServiceModel;
    // using System.IdentityModel.Tokens;

    // soapsvtest.WebService1SoapClient cl = new soapsvtest.WebService1SoapClient();
    // string value = cl.AddQuote(textBox1.Text);

    var bind = new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly);
    bind.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
    var address = new EndpointAddress(new Uri("http://soap.testsv.jp/test/WebService1.asmx"));

    var cl = new soapsvtest.WebService1SoapClient(bind, address);
    c1.ClientCredentials.UserName.UserName = GetUserName();
    c1.ClientCredentials.UserName.Password = GetPassword();

    string value = cl.AddQuote(textBox1.Text);
記事No.97634 のレス /過去ログ169より / 関連記事表示
削除チェック/

■97681  Re[2]: soap通信を行うクライアントにてbasic認証を行いたい
□投稿者/ mofuramei -(2021/06/25(Fri) 23:48:01)
    No97670 (魔界の仮面弁士 さん) に返信
    魔界の仮面弁士様返信ありがとうございます。

    サンプルを頂いた事で接続する事が出来ました!
    情報感謝いたします。


    gitの方も合わせて更新しておきます。

    検索しても情報がほとんど引っかからない為、MSDNのサンプルを手掛かりに一日中触っているだけなので
    実際の情報は非常に助かります。
    返信ありがとうございます。


    > // soapsvtest.WebService1SoapClient cl = new soapsvtest.WebService1SoapClient();
    > // string value = cl.AddQuote(textBox1.Text);
    >
    > var bind = new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly);
    > bind.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
    > var address = new EndpointAddress(new Uri("http://soap.testsv.jp/test/WebService1.asmx"));
    >
    > var cl = new soapsvtest.WebService1SoapClient(bind, address);
    > c1.ClientCredentials.UserName.UserName = GetUserName();
    > c1.ClientCredentials.UserName.Password = GetPassword();
    >
    > string value = cl.AddQuote(textBox1.Text);
記事No.97634 のレス /過去ログ169より / 関連記事表示
削除チェック/

■97697  Re[3]: soap通信を行うクライアントにてbasic認証を行いたい
□投稿者/ mofuramei -(2021/07/01(Thu) 15:25:29)
    No97681 (mofuramei さん) に返信
    > ■No97670 (魔界の仮面弁士 さん) に返信
    > 魔界の仮面弁士様返信ありがとうございます。
    >
    > サンプルを頂いた事で接続する事が出来ました!
    > 情報感謝いたします。
    >
    >
    > gitの方も合わせて更新しておきます。
    >
    > 検索しても情報がほとんど引っかからない為、MSDNのサンプルを手掛かりに一日中触っているだけなので
    > 実際の情報は非常に助かります。
    > 返信ありがとうございます。
    >
    >
    >>// soapsvtest.WebService1SoapClient cl = new soapsvtest.WebService1SoapClient();
    >>// string value = cl.AddQuote(textBox1.Text);
    >>
    >>var bind = new BasicHttpBinding(BasicHttpSecurityMode.TransportCredentialOnly);
    >>bind.Security.Transport.ClientCredentialType = HttpClientCredentialType.Basic;
    >>var address = new EndpointAddress(new Uri("http://soap.testsv.jp/test/WebService1.asmx"));
    >>
    >>var cl = new soapsvtest.WebService1SoapClient(bind, address);
    >>c1.ClientCredentials.UserName.UserName = GetUserName();
    >>c1.ClientCredentials.UserName.Password = GetPassword();
    >>
    >>string value = cl.AddQuote(textBox1.Text);
記事No.97634 のレス / END /過去ログ169より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -