問題タブ [dllexport]
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-2010 - VS2010 (CUDA) での DLL のエクスポートに関する問題
DLL ソリューションをビルドするときに問題が発生しました。CUDA 機能を持たせるために、LabVIEW 2010 で使用する DLL を作成しています。ただし、エクスポートするすべての関数でリンカー エラー LNK2019 が発生します。
ビルドのカスタマイズを既に CUDA 4.0 に変更しているため、すべてのライブラリが依存関係に含まれています。ただし、まだ次のエラーが表示されます。
1>LVCUDA.obj: エラー LNK2019: 関数 _LVcufftPlan2D で参照されている未解決の外部シンボル _cufftPlan2d@16
ソリューションを構築しようとすると。
リンカーが未解決の外部シンボルエラーをスローし続ける原因となっている他に何が欠けているのか疑問に思っていました。
CUDA から生成された自動コマンド ラインは次のとおりです。
/OUT:"C:\VC Projects\CUDA\Debug\CUDA.dll" /INCREMENTAL /NOLOGO /LIBPATH:"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\bin" /LIBPATH:"C :\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\lib\x64" /LIBPATH:"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\lib\Win32" /DLL "cudart. lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid. lib" "odbc32.lib" "odbccp32.lib" /MANIFEST /ManifestFile:"Debug\CUDA.dll.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /DEBUG /PDB: 「C:\VC Projects\CUDA\Debug\CUDA.pdb" /SUBSYSTEM:WINDOWS /PGD:"C:\VC Projects\CUDA\Debug\CUDA.pgd" /TLBID:1 /DYNAMICBASE /NXCOMPAT /MACHINE:X86 /ERRORREPORT:QUEUE
c++ - C++DLLから関数のマングル名を取得する
関数を次のように宣言しました__declspec(dllexport) void TakeInput();
この関数を持つDLLはC#でエクスポートされます。c#コードにないエントリポイントとしてこの関数への関数呼び出しを実行しているときに失敗します。
グーグルは、問題が正しいエントリポイントにあることを示しています。提供されていません。この関数のマングル名を提供する必要があります。
では、どうすればこの関数の名前が壊れているのか知りたいのですが。
c++ - エクスポートされた関数のないDLL?
MS-Office DLLを少し覗いてみましたが、一部のDLLにはエクスポートされた関数がないことに気付きました。私がよく理解していないのは、アプリケーションが関数をエクスポートせずにこれらのDLLをどのように使用できるかということです。
つまり、dllmain()はLoadLibrary()で実行されますが、ポイントは何ですか?なぜ誰かがエクスポートされた関数なしでDLLを作成するのでしょうか?
ありがとう!:-)
c# - マネージ プロジェクトからロードされたときに、アンマネージ DLL のメソッドをステップ実行するにはどうすればよいですか? (ビジュアル C++/C#)
3 つのプロジェクトを含む Visual Studio 2010 ソリューションがあります。1 つ目は、いくつかの DLL エクスポートを使用して作成したアンマネージ DLL プロジェクト (C++) です。2 番目のプロジェクトは、最初のプロジェクト (DLLImport を使用する C#) のマネージ ラッパーです。最後のプロジェクトは、最初のプロジェクトの機能をテストするために使用している WPF アプリケーションです。
ビルド後のステップで DLL をラッパーの release/debug フォルダーにコピーして、最初のプロジェクトを使用しています。ただし、デバッガーでステップ実行するには、これだけでは不十分です。アンマネージ DLL のデバッグ シンボルをロードするために、プロジェクトを適切に参照する方法がわかりません。どうすればいいですか?
c++ - C++ - クラス メソッドが dll からエクスポートしない (VS - 勝つ)
C++
Visual Studio で dll タイプのサンプル プロジェクトを作成しました。ヘッダーファイルが含まれていますSqlLtDb.h
:
inSqlLtDb.cpp
メソッドは次のように実装されます (2 つの実装のみを示しています)。
SqlLtDb.def
ファイルは次のようになります。
SqlLtDb.lib ファイルは、上記の .def ファイルを使用して、LIB コマンドによって生成されます。これは私の SqlLtDb.dll ファイルです。
ここで、このファイルを consoleApplication アプリケーションに含めたいと思います。ConsoleApplication は VS 2008 にあります。設定しました:
Properties->Configuration Properties->Linker->Input->Additional Dependencies : SqlLtDb.lib;
Properties->Configuration Properties->Linker->General->Additional Library
Directories: E:\PM\SqlLtDb\Release;
ランタイム ライブラリは次のように設定されています: マルチスレッド デバッグ DLL (/MDd) (私は変更していません)。
ファイルをコピーしました:が生成さSqlLtDb.dll, SqlLtDb.lib, SqlLtDb.def, sqlite3.dll
れる Debug フォルダーに。consoleApplication.exe
そして、ソースファイルが保存されているSqlLtDb.h
フォルダーにファイルを追加しました。consoleApplication's
関数 main は次のconsoleApplication
ようになります。
このコードをコンパイルすると、エラーが発生します。
メソッドgetInstanceCSblLtDb
は正常にエクスポートされましたが、問題はクラスからのエクスポート メソッドにあります。すべてのクラスをエクスポートするつもりはありません。クラスへのポインターをエクスポートすることをお勧めします。
ありがとう
macos - MacOSXでDLL関数をエクスポートする正しい方法
Mac OS X 10.6で単純なDLLをコンパイルしようとしていますが、DLLが世界中で使用できるように提供している関数を宣言する適切な方法について混乱しています。信頼できるソースからのサンプルコードに続いて、私は思いついた:
しかし、その上にgccbarfsがあります。サンプルコードが実際に持っていたのはMACPASCALとDLLExportで、これはマクロだと思いました。#definesのサンプルコードやSDKなどを調べて、見つけたものをプラグインしました。これらの定義は#ifs内に埋め込まれている可能性があるため、私が見つけたものは良くなく、真実ではありません。論理的には、私が明白なことをしてDLLExportとMACPASCALを使用すると、コンパイラーもバーフするので、それは解決策ではありません。
DLLの機能をアプリで利用できるようにする正しい方法は何ですか?
c# - C#からdll関数を呼び出すときのPInvokeStackImbalance
作成したdllに存在するC++コードを呼び出す必要があるWPFアプリを作成しています。最も基本的なテスト関数を使用しても、常にPInvokeStackImbalanceエラーが発生します。たとえば、C ++ dllの場合:
この関数は何もしません。C#側は次のようになります。
そして、私はこのc#関数を次のように呼び出します:
Test(1)
...そして私はPInvokeStackImbalanceを手に入れました!! どうすればいいの?
前もって感謝します...
トム
mfc - Visual Studio 2005 + MFC:リンカーエラー。エクスポートしてもコンストラクターとリンクできません
exeとdllの2つのMFCプロジェクトがあります。exeはdllを参照します。exeプロジェクトからいくつかのクラスを抽出してdllを作成しました。これが、私の出発点でした。
dllは正常にビルドされますが、exeはdllのクラスの1つのコンストラクターとリンクできません。クラス全体を__declspec(dllexport)'してみましたが、警告が多すぎたため、代わりにすべてのパブリックメンバーを__declspec(dllexport)'しました。これにより、コンストラクターを除くほとんどのリンクエラーが解決されました。
エラー(MsgBoxTestはexe、CustomMessageBoxDlgはdll):
コンストラクター宣言(オーバーロードされています):
エラーによって参照されるコンストラクターの使用法:
Clean + Buildを試しましたが、葉巻はありません
編集:クラスはDECLARE_DYNAMICおよびIMPLEMENT_DYNAMICマクロを使用し、CDialogを拡張します
visual-c++ - 実行可能ファイルをリンクするMSVC未解決の外部シンボル
2つの既存の実行可能ファイルAとTがありますが、同じソリューションで、触れる前はどちらも正常に実行されていました。実行可能ファイルAには、クラスPを定義するヘッダーと、静的インスタンスMyPのプロトタイプがあります。定義はプロジェクトAでコンパイルされます。実行可能ファイルTでは、プロジェクトAでMyPのメンバー関数を呼び出したいので、クラスの宣言にdllimport / exportマクロを追加し、ヘッダー(定義ではない)にMyPを追加しました。プロジェクトTにヘッダーが含まれています。dllimport/exportマクロは標準であり、A_EXPORTSはプロジェクトAで定義されていますが、Tでは定義されていません。
ソリューションのプロジェクトTへの依存関係としてプロジェクトAを追加しました。まだ正常にコンパイルされますが、Tはunresolved external symbol "__declspec(import) <snip> referenced in function <snip>
関数呼び出しとunresolved external symbol "__declspec(dllimport) class P MyP" <snip>
静的オブジェクトを考え出します。また、リンクを開始した直後の出力ログにも表示されます。Creating library Debug/A.lib and object Debug/A.exp
これは、既存の実行可能ファイルに対してリンクしているはずなので、不吉なようです。
私の質問は、MSVC2010にそれらがどこにあるかをどのように伝えることができるかということです。Aを依存関係として設定するだけで、自動的にそれがわかると思いました。既存の実行可能ファイルに対してリンクできますよね?