問題タブ [oracle-pro-c]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
visual-studio-2012 - Pro*C/C++ Oracleプリコンパイラがwindows.hヘッダー・ファイルを解析できないのはなぜですか?
MSVC Ultimate 2012 を使用して、Windows Server 2008 R2 Standard (SP1) で作業しています。「C」プロジェクトを 64 ビット プラットフォーム用にコンパイルしようとしています (ただし、問題はターゲットに関連していないようです)。プロジェクトには *.pc ファイルが 1 つ含まれており、Pro*C/C++ プリコンパイラでプリコンパイルする必要があります。問題は、そのファイルをプリコンパイルできないことです。windows.h ヘッダー ファイルの解析中にプリコンパイルが失敗します。助けてください!!!
詳細:
1) ソース ファイル:私の my.pc ファイルは次のように始まります。
注:#include <windows.h>
エラーの呼び出しには最初のもので十分です。
2) 構成ファイル:デフォルトの pcscfg.cfg ファイルは空です。プロジェクト構成ファイル my.cfg は次のようになります。
注: d:\Progra~1\Micros~2.0\VC\include = D:\Program Files\Microsoft Visual Studio 10.0\VC\include、c:\Progra~2\WI3CF2~1\8.0\Include\um = C :\Program Files (x86)\Windows Kits\8.0\Include\um, c:\Progra~2\WI3CF2~1\8.0\Include\shared = C:\Program Files (x86)\Windows Kits\8.0\Include\共有、$PROC11_ORACLE_HOME = d:\oracle\product\11.2.0\client_2. これらのパスは、必要なすべてのヘッダー ファイルを見つけるために存在します。
3) コマンド ライン:カスタム ビルド ツールの [全般] オプションで、my.pc ファイルに次のコマンド ラインを定義しました。
注: $(MSDEV_HOME) = D:\Program Files\Microsoft Visual Studio 10.0.
4) プラットフォーム: MSVC プラットフォームは x64 に設定されていますが、Win32 でも同様の結果が得られました。
5) エラー メッセージ: my.cfg ファイルにdefine=_WIN64 が含まれている場合、プリコンパイル中にエラー メッセージが表示されます。
6) エラー メッセージ: define=_WIN64 がmy.cfg ファイルに含まれていない場合、プリコンパイル中に受信されるエラー メッセージ:
7) ファイル vadefs.h: vadefs.h ヘッダー ファイルの重要な行は次のようになります。
問題は、標準の Microsoft ヘッダー ファイルでプリコンパイルが失敗する理由です。_WIN64 に関連するものなど、マクロに混乱がある可能性がありますか? または、構成ファイルに別のマクロを追加する必要がありますか? 私はたくさんの議論を読みましたが、進展はありません。どんなアイデアでも大歓迎です!
c++ - データベースなしで Oracle Pro*C をコンパイルすることは可能ですか (セマンティック チェックをスキップします)。
製品の 35 以上のバージョンの開発サーバーをサポートしています。各バージョンは同じ DB スキーマを持っていない可能性があるため、従来は、開発者が Pro*C ライブラリを構築できるように各バージョンの Oracle インスタンスをサポートする必要がありました。
現在、バージョンの数が多すぎて、個々の Linux サーバー上の個々の DB インスタンスでサポートできません。したがって、これらのアプローチのいずれかが可能であると思っていました。
1) Pro*C コード (.pc .pcc) をセマンティック チェックなしでコンパイルするには (リリース ビルドでは危険であることはわかっていますが、迅速なテスト ビルドの場合、開発者は私が新しいサーバーを提供するのを待つ必要はありません) 2) 持っているメタデータのみを含む、データベースの 35 以上のインスタンスを持つ 1 台のサーバー
セマンティックチェックを無効にできる場合はかなりの場所を検索しましたが、成功しませんでした。1 つの Linux サーバーで複数のインスタンスを構成しようとしましたが、各インスタンスはかなり多くのメモリを使用するため、35 以上のインスタンスを持つことは問題外です。
巧妙なトリックや提案は大歓迎です。
ありがとう、
ティーン
c - Pro*C での浮動小数点数の処理
浮動小数点数の範囲を含む NUMBER 型の列を持つ Oracle テーブルがあります。Pro*C を使用してそれを C 変数に読み込む正しい方法は何ですか?私は次のことを試しました:
多くの場合、これで問題ありませんが、一部の浮動小数点数、特に 0 に非常に近い数値 (1.4E-43 など) では、次のエラーが発生します。
そのような値を読み取る正しい/安全な方法、またはオラクルに型を安全に変換させて精度の低下を許容する方法はありますか?
oracle - Pro*Cコンパイラの仕組み
私は Pro*C を初めて使用します。Pro*C コンパイラが .pc ファイルを .c (これはまだソース ファイルです) にコンパイルすることを読み、.c を開くと、そこに記述されているすべての構造が見つかりました。Pro*C コンパイラは、正しくないと思われる EXEC SQL ステートメントのみをコンパイルしますか。それでは、すべてのprintfsはどこに行ったのでしょうか? それらはすべて構造体に変換されましたか?
oracle - GNU autotools プロセスと Oracle Pro C プリプロセッサの使用
いくつかのライブラリを GNU autotools に変換しており、Oracle Pro C プリプロセッサを統合するのに苦労しています。
ワークフローは次のとおりです。
.pc => .c => o. => .so/.a/binary
automake のマニュアルには、ビルド プロセスに追加の事前ステップを追加する方法に関するヒントが見つかりませんでした。変更しようとしましSOURCES=file.pc
たが、autoreconf で C ファイルが見つからないというエラーが表示されます。私は追加SUFFIXES = .pc .c .o
しました
しかし、ターゲットは無視され、直接呼び出された場合$<
は解決されません。
何をすべきか?
c - Linux でコンパイルして Solaris で正常に動作する 'C' アプリケーションをコンパイルするにはどうすればよいですか?
Linux で 'C' アプリケーションをコンパイルして実行しようとしていますが、これは Solaris で完全に実行されます。最初に、Solaris でコンパイルされたバイナリ ファイルをコピーして Linux で実行しようとしましたが、cannot execute binary file
. したがって、最初に、Solaris でのコンパイルに使用したのと同じ Makefile を使用して、Linux でコードをコンパイルしようとしました。Makefile の内容は次のとおりです。
上記の Makefile を使用すると、以下に示すようにコードでエラーが発生しました。
更新:
後で、ファイルにヘッダー ファイルを含めたglobal.ec
ところ、エラーは次のように減少しました。
注:エラーは .c ファイルで報告されていますが、実際には .ec ファイルです。
global.ec の簡易版
誰かがここで同様の質問をし、受け入れられた応答はGNU Autoconfを使用することでした。しかし、私の場合、すべてが Solaris 上で動作しているため、Makefile を変更したり、不足しているヘッダー ファイルを追加したりすることで、動作させることができると思います。また、StackOverflow で同様の投稿を見つけたところ、 GDB のようなデバッガーを使用するよう提案されていました。私の場合、GDB を使用すると役立ちますか?
私はこれに非常に慣れていないので、私を助けてください。
c - Oracle Pro*C プリコンパイラ エラー PCC-S-02201: シンボル「_Bool」が見つかりました
既存のプログラムを AIX から RedHat Linux に変換しています。Oracle Pro*C は、プリコンパイル時に問題を引き起こしています。cursesh.h
のファイルでコンパイル エラーが発生しますbool
typedef
。
プリコンパイル構成:
インクルード パスは、gcc コンパイラ パスと一致しています。
コンパイルエラーを解決するのを手伝ってください。他のプリプロセッサ シンボルを含める必要がありますか、または何か不足していsys_include
ますか?
PCSCFG.CFG:
sql - Oracle Pro*C -- セグメンテーション エラー (コア ダンプ)
私は独学で Pro*C を学んでいます。これは、データベース内のレコードを介してカーソルを移動するプログラムであり、コンパイルして実行します。「Guest_IDを入力してください(終了するにはexitを入力してください)>>」というプロンプトまで表示されます。その後、整数を入力すると「Segmentation fault (core dumped)」としてエラーになります。文字列を入れると外側の for ループのすぐ内側で条件分岐に入るようです。
「BYE」を出力して終了します。変数がどのように宣言され、SQL から入力されるかについてはまだ慣れていないため、ここでのトラブルシューティングにどの宣言が重要になるかはわかりませんでした。そのため、ここではコードをほとんどそのままにしておきます。
単純な間違いを犯していると確信していますが、検索で役立つものは何も見つかりませんでした。私はこれをサーバーで実行していますが、デバッグが返されません (これは、これまでに解決できなかった唯一の主要なバグです)。通常、C プログラムはデバッガーで実行されますが、これは Pro C であり、Oracle Pro C のデバッグ全体に戸惑っています (リモート データベースで実行されているため)。この種のエラーでは、通常、メモリが適切に割り当てられていないのではないかと疑っていますが、ここではそのようなものは見当たりません。
これらを試しましたが、役に立ちませんでした:
C でのセグメンテーション違反 (コア ダンプ) ランタイム エラー
c - Oracle Pro*C -- ネストされたループでのカーソルの使用
私は独学で Pro*C を学んでおり、(おそらく) カーソルを使用してデータベース内のレコードを処理し、コンパイルして実行するプログラムを持っています。問題は、変数が印刷されたときにメモリにあったジャンクを取得していることです(カーソルを使用して読み込まれたもの)。
SQL execステートメントをいくつかの異なる方法で分割しようとしましたが、これは役に立ちませんでした。また、さまざまな場所でSQLを開いたり閉じたりしようとしましたが、これも役に立ちませんでした。私は本当に長いデバッグ プロセスの最後にいます。この時点で、私は非常に初心者の間違いを犯していると確信しています。ここにいる Oracle プログラマーの中で少し時間を割いても構わないという人がいれば、ここで軌道に戻る方法について少しフィードバックをいただければ幸いです。
印刷するはずです:
それは実際に印刷します:
カーソルを完全に台無しにしているように感じますが、Pro*C での変数の宣言方法と使用方法にまだ慣れていないため、問題がどこにあるかを正確に特定することはできません。また、C プログラムは通常デバッグされますが、これはリモート サーバー上で実行され、デバッグは非常に制限されており、dbx コマンドさえありません。
コード:
通常、C プログラムはデバッガーで実行されますが、これは Pro C であり、Oracle Pro C のデバッグ全体に戸惑っています (リモート データベースで実行されているため)。
これらを試しましたが、役に立ちませんでした:
Oracle ProC INSERT INTO VALUES ( (select ...) )
Oracle Pro*C でカーソルを使用してテーブルを更新できませんでした
VARCHAR 変数は別の方法で宣言する必要があると言われましたが、他の方法ではエラーがスローされるようです。