問題タブ [linker]
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.
c++ - C++ 関数のテンプレート特殊化の可視性
テンプレート関数を持つfileA.h
クラスを宣言するものがあるとします。この関数は、(通常のテンプレート関数と同様に) ヘッダー ファイルに直接実装されます。ここで、(for のような)の特殊な実装を(つまり、ヘッダー ファイルではなく) 追加します。classA
SomeFunc<T>()
SomeFunc()
SomeFunc<int>()
fileA.C
SomeFunc<int>()
他のコードから (おそらく別のライブラリからも) 呼び出す場合、ジェネリック バージョンまたは特殊化を呼び出すでしょうか?
クラスと関数が2つのアプリケーションで使用されるライブラリに存在するという問題が現在発生しています。また、あるアプリケーションは特殊化を正しく使用していますが、別のアプリケーションは一般的な形式を使用しています (後で実行時の問題が発生します)。違いはなぜですか?これはリンカーオプションなどに関連している可能性がありますか? これは Linux で g++ 4.1.2 を使用しています。
delphi - Delphi リソース不足
Delphi 7 でコンパイルしたすべてのプロジェクトで、実行時パッケージを使用してコンパイルしないと、「リソースが多すぎます」というリンカ エラーが発生します。空のアプリケーションでもこのエラーが発生します。
言い換えれば、Delphi は私の上で死にました。
.net - .Net アセンブリのリンク
これはすべて仮説ですので、ご容赦ください。
C# で Foo というツールを作成しているとします。出力は foo.exe です。Bar と呼ばれる、使用したい本当に素晴らしいライブラリをいくつか見つけました。このライブラリは、プロジェクトで bar.dll として参照できます。プロジェクトをビルドすると、出力ディレクトリに foo.exe と bar.dll があります。これまでのところ良い。
私がやりたいのは、foo.exe と bar.dll をリンクして、1 つのアセンブリ foo.exe にすることです。私は VS2008 でこれを実行できることを望んでいますが、al.exe のようなコマンド ライン ツールに頼らなければならない場合でも、それほど気にしません。
c++ - 非増分リンク (MSVS) をトリガーするシナリオを軽減する最善の方法
インクリメンタル リンクはリンクに費やされる時間の大部分に対処しますが、非常に大規模なプロジェクトであっても、MSVS のインクリメンタル リンカは非常に行き当たりばったりです。(私は現在 2003 の atm を使用しています。2005/8 でこの問題が解決されたかどうか知りたいです。) 既知のトリガーのリストには次のようなものがあります。
- メインの .exe プロジェクトの外部にあるものを変更すると、完全なリンクがトリガーされます
- 静的変数を追加すると、完全なリンクがトリガーされる可能性が 50% ありました
そして、このリストは確かに包括的ではありません. 完全なリンクを回避するにはどうすればよいですか?
これまでのところ、私が見つけた唯一の診断ツールは
- リンカー コマンド ライン オプションの /test
そしてそれはひどいです。完全な再リンクのトリガーを診断するために、どのようなソリューションがありますか?
makefile - crti.o ファイルがありません
私は GNU ツール チェーンを使用してプロジェクトを構築していますが、リンクするまではすべて正常に動作し、リンカはそれが見つからない/見つからないと文句を言いますcrti.o
。これは私のオブジェクト ファイルの 1 つではなく、libc に関連しているようですが、なぜこれが必要なのか理解できませcrti.o
んlibc.a
。
アームプラットフォーム用にクロスコンパイルしています。ツールチェーンにファイルがありますが、リンカーにそれを含めるにはどうすればよいですか?
crti.o
「ライブラリ」検索パスの 1 つにあり.o
ますが、ライブラリ パスでファイルを検索する必要がありますか?
gcc
との検索パスは同じld
ですか?
math - Math.h で関数を呼び出すとリンク エラーが発生するのはなぜですか?
で関数を呼び出そうとするとmath.h
、次のようなリンク エラーが発生します。
しかし、#include <math.h>
私はgccを使用して次のようにコンパイルしています:
リンカが の定義を見つけられないのはなぜsqrt
ですか?
.net - .Net フレームワークをバンドルせずに .Net アプリをリリースするには?
.Net フレームワークをバンドルせずにアプリケーションを出荷するという奇妙な要件があります (メモリのフットプリントと帯域幅を節約するため)。
これは可能ですか?お客様のシステムに .Net ランタイムがインストールされている場合とされていない場合があります。
Ngen を実行すると、この問題は解決しますか? 私は、C++ アプリをリリースする古き良き方法のようなものを探していました (リンカーを使用して、必要なバイナリのみをリンクします)。
c++ - C++での「静的」メソッドのリンクに関する問題
別のファイルで定義されたCPPクラスのいくつかの「静的」メソッドを呼び出したいのですが、リンクに問題があります。問題を再現するテストケースを作成しました。そのコードは次のとおりです。
(私はC ++に完全に慣れていません。私は、Javaのバックグラウンドを持っており、Cに少し精通しています。)
コンパイルしようとすると、次のエラーが発生します。
しかし、main.cppのクラス宣言を削除し、それを#include "CppClass.cpp"に置き換えると、正常に機能します。基本的に、これらの宣言を別の.hファイルに入れて使用したいと思います。私は何かが足りないのですか?
助けてくれてありがとう。
gcc - 32ビットモードでgccアトミック操作をコンパイルするときのリンクエラー
私は次のプログラムを持っています:
マルチCPU64ビットIntelマシンで実行されているLinuxでGCC4.2.2を使用してこのプログラムをコンパイルしています。
プログラムを64ビットモードでコンパイルすると、正常にコンパイルおよびリンクされます。
32ビットモードでコンパイルすると、次のエラーが発生します。
実際に32ビットプロセッサで実行することはありませんが、いくつかの32ビットライブラリとリンクできるように、32ビットの実行可能ファイルが必要です。
私の2つの質問は次のとおりです。
32ビットモードでコンパイルするとリンクエラーが発生するのはなぜですか?
32ビットライブラリとリンクしながら、プログラムをコンパイルしてリンクする方法はありますか?
linker - 致命的なエラー C1900: 'P1' バージョン '20060201' と 'P2' バージョン '20050411' の不一致
VIsual Studio 2005 Express Edition でプロジェクトをコンパイルすると、このリンク エラーが発生します。誰でもそれを解決する方法を提案できますか?