gcc を使用して静的ライブラリを使用して DLL をコンパイルする (mingw32)
php エディタ Baicao では、gcc (mingw32) を使用して静的ライブラリを含む DLL をコンパイルする方法を紹介します。開発プロセス中、他のプロジェクトで簡単に呼び出せるように、静的ライブラリを DLL にパッケージ化することが必要になることがよくあります。 gcc (mingw32) を使用して静的ライブラリを含む DLL をコンパイルする方法は比較的簡単で、特定の手順に従うだけです。まず、mingw32 および gcc コンパイラーがインストールされていることを確認してください。次に、コマンド ラインに gcc -shared -o libname.dll libname.a と入力して、DLL ファイルを生成します。このようにして、静的ライブラリを他のプロジェクトで使用する DLL に簡単にコンパイルできます。
質問の内容
外部ツール (つまり cgo) によって生成された静的ライブラリがあります。これを libsecondary.a と呼びます。 「libsecondary.a」を依存関係として含めながらダイナミック ライブラリを生成したいと思います。libsecondary.h 内の onprocessinit() という関数をエクスポートし、dll_process_attach イベントで呼び出します。
共有ライブラリを生成しようとしましたが、機能しないようです x86_64-w64-mingw32-share-l。 -lsecondary -static-libgcc -static-libstdc -static .\dllmain.c
エラー出力は次のとおりです。 dllmain.c:(.text 0x9b): 'onprocessinit' への未定義の参照、何が起こっていますか?
これはヘッダー ファイル libsecondary.h
です。 リーリーこれは dllmain.cです
65be0f35ebbcbcこれはエクスポートされた golang 関数です (go build -buildmode=c-archive を使用してコンパイルした関数)
/* code generated by cmd/cgo; do not edit. */ /* package command-line-arguments */ #line 1 "cgo-builtin-export-prolog" #include <stddef.h> #ifndef go_cgo_export_prologue_h #define go_cgo_export_prologue_h #ifndef go_cgo_gostring_typedef typedef struct { const char *p; ptrdiff_t n; } _gostring_; #endif #endif /* start of preamble from import "c" comments. */ /* end of preamble from import "c" comments. */ /* start of boilerplate cgo prologue. */ #line 1 "cgo-gcc-export-header-prolog" #ifndef go_cgo_prologue_h #define go_cgo_prologue_h typedef signed char goint8; typedef unsigned char gouint8; typedef short goint16; typedef unsigned short gouint16; typedef int goint32; typedef unsigned int gouint32; typedef long long goint64; typedef unsigned long long gouint64; typedef goint64 goint; typedef gouint64 gouint; typedef size_t gouintptr; typedef float gofloat32; typedef double gofloat64; #ifdef _msc_ver #include <complex.h> typedef _fcomplex gocomplex64; typedef _dcomplex gocomplex128; #else typedef float _complex gocomplex64; typedef double _complex gocomplex128; #endif /* static assertion to make sure the file is being used on architecture at least with matching size of goint. */ typedef char _check_for_64_bit_pointer_matching_goint[sizeof(void*)==64/8 ? 1:-1]; #ifndef go_cgo_gostring_typedef typedef _gostring_ gostring; #endif typedef void *gomap; typedef void *gochan; typedef struct { void *t; void *v; } gointerface; typedef struct { void *data; goint len; goint cap; } goslice; #endif /* end of boilerplate cgo prologue. */ #ifdef __cplusplus extern "c" { #endif extern __declspec(dllexport) void onprocessinit(); #ifdef __cplusplus } #endif
解決策
うわー、答えは引数の位置です、
x86_64-w64-mingw32 -shared -static-libgcc -static-libstdc -static .\dllmain.c .\libsecondary.a
逆に入力すると、libsecondary.a、OMG...
からの参照が見つかりません。syscall.NewLazyDLL が LoadLibraryA を呼び出し、DLL_PROCESS_ATTACH でロックされているため、上記のコードもロード時にデッドロックになります。そのため、解決策は CreateThread を作成し、スレッド内で golang でエクスポートされた関数を実行することです :)
以上がgcc を使用して静的ライブラリを使用して DLL をコンパイルする (mingw32)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









元のコンテンツの意味を変更したり、コンテンツを微調整したり、コンテンツを書き換えたり、継続したりしないでください。 Redmi Note13RPro は、優れたパフォーマンスを備えているだけでなく、より快適なユーザー エクスペリエンスも備えています。ユーザーエクスペリエンスを考慮して、Redmi Note13RPro にはフォント調整機能が搭載されており、ユーザーが携帯電話のフォントを調整できるようになります。 Redmi Note13R Proのフォントサイズを調整する方法を知りたい方はぜひご覧ください。 Redmi Note13RProでフォントサイズを調整するにはどうすればよいですか? 1. 設定アプリを開きます。 2. 一番下までスクロールして「表示」を選択します。 3.「文字サイズ」をクリックします。 4. この画面では、スライダーをドラッグしてフォント サイズを調整したり、プリセットのフォント サイズを選択したりできます。 5. 調整が完了したら、「OK」を押して保存します

typedef struct は、構造体の使用を簡素化するために構造体型のエイリアスを作成するために C 言語で使用されます。構造体の別名を指定することで、新しいデータ型を既存の構造体に別名付けします。利点としては、可読性の向上、コードの再利用、型チェックなどが挙げられます。注: エイリアスを使用する前に構造体を定義する必要があります。エイリアスはプログラム内で一意であり、宣言されているスコープ内でのみ有効である必要があります。

Redmi Note13RProは最近非常に人気のある携帯電話です。しかし、多くのユーザーはこの携帯電話を初めて使用するため、Redmi Note13RProをコンピュータに接続する方法がわかりません。エディターが説明するためにここにあります。詳細なチュートリアルの紹介が提供されます。 Redmi Note13RProをコンピュータに接続するにはどうすればよいですか? 1. USB データ ケーブルを使用して、Redmi 電話をコンピュータの USB インターフェイスに接続します。 2. 電話機の設定を開き、[オプション] をクリックして、USB デバッグをオンにします。 3. コンピュータでデバイス マネージャを開き、モバイル デバイス オプションを見つけます。 4. モバイル デバイスを右クリックし、[ドライバーの更新] を選択し、[更新されたドライバーを自動的に検索する] を選択します。 5. コンピューターがドライバーを自動的に検索しない場合は、

Redmi Note13RPro携帯電話には、ソフトウェア機能の点で多くのスマートツールが統合されており、その中には、写真からテキストコンテンツを迅速かつ正確に抽出する機能も含まれます。次のエディターは、Redmi Note13RProが写真からテキストを抽出する方法を紹介します。 Redmi Note13RProで写真からテキストを抽出するにはどうすればよいですか? Xiaomi QR コード スキャン機能を使用し、携帯電話で QR コード スキャン アプリケーションを開き、画像アイコンをクリックして画像を選択し、右側の [テキストを認識] オプションをクリックして画像内のテキストを正常に抽出します。携帯電話のアルバムを通じて操作します。携帯電話のアルバムでテキストを抽出する必要がある画像を見つけ、画像の下にある「その他」をクリックし、「テキストを抽出」を選択します。認識に成功したら、必要に応じてテキストをコピーまたは保存できます。 WeChat ミニ プログラムを使用します。オープンマイクロ

Huova 全体は、誰もが複数のプラットフォームで体験できる非常に楽しいカジュアル パズル ゲームです。このゲームには、ロックが解除されるのを待っている無数のエキサイティングなレベルが用意されており、各レベルには目新しさと挑戦が満載されており、質問に答えて新しいゲーム コンテンツのロックを解除するという興味深い冒険を体験することができます。では、Huaba のレベル全体をクリアするにはどうすればよいでしょうか?今日は「ホールライフ」の全レベルの完全なガイドをお届けします。レベルを通過する際に問題が発生した場合は、それを参照してください。 「ザ・ホール・ライフ」のすべてのレベルへの完全なガイド 「ザ・ホール・ライフ」のすべてのレベルへの完全なガイド 彼女が大晦日を見るのを手伝い、妹が卑劣なオオカミと祖母を識別するのを手伝いましょう少女が屋外の冒険のために危険から逃げるのを助け、アー・ピオを見ないふりをして元に戻った 人型ロボットはオランウータンが人型になるのを助けた 後部座席の誰かが落ち着いて女性の幽霊に対処した。落ち着いて女性の幽霊に対処しました。

全体 Huaba は、Douyin で非常に人気のある楽しいレベル突破ゲームです。ゲームにはたくさんのレベルがあり、誰もが挑戦するのを待っています。ゲームレベル「西遊記ビューティー」では、全員が「西遊記」の女性キャラクターが自分の位置に戻るのを手伝う必要があります。レベルをクリアするにはどうすればよいですか?以下は、編集者によって提供されたゲーム「ホールライフ」を完了するためのガイドです。西遊記の美しさは、西遊記の女性キャラクターが自分の場所に戻るのを助けます。ゲーム、お役に立てれば幸いです。 「一生」 西遊記の美女が西遊記の女性キャラクターを元に戻す ステージクリアのための戦略 西遊記の美女が西遊記の女性キャラクターを元に戻すのを助ける。 1. スクロールをクリックすると女性キャラクターが表示されます。 2. 白骨の精霊と孔雀の精霊をクリックしてアクションを切り替えます。 3. 答えは次の図の通りです。 Live」には、すべてのレベルの完全なガイドがあり、彼女が一年の番人になるのを助け、妹がクズとオオカミを識別するのを助け、そして祖母が少女を危険から逃れて屋外の冒険をするのを助けます。

Colspan は、セルがまたがる列の数を指定する HTML のテーブル要素属性です。 Colspan 属性を使用すると、セルを結合して幅の広い列を作成できるため、テーブルの読みやすさと保守性が向上し、より柔軟なレイアウトを作成できます。

「黄砂の禁域」のグンカンドリはどうでしょうか?ゲームにはプレイヤーが選択できる強力な武器がたくさんあります。エディターはプレイヤーがグンカンドリ武器の詳細な属性を整理するのに役立ちます。一緒に見てみましょう。 『黄砂の禁域』 ウォーシップバード武器紹介一覧 武器情報 武器紹介名 ウォーシップバード レベル 四ツ星 タイプ サブマシンガン 属性 連射熱量 1080 装弾数 45 リアルバージョン 1.0 武器スキル:追加サポートスキル フィールド上のプレイヤーが使用し、武器使用者を獲得 15秒間、攻撃力の13.2%/15.4%/17.6%/19.8%/22%。ブレークスルーマテリアル レベル 20: 合成粒子*レベル 430: 芳香族プラスチック*3、合成粒子*レベル 1040: 芳香族プラスチック
