私はDLLを使って配布する必要があるAPIを開発しようとしています。 DLLに書かれたコードを直接テストすることはできないので、DLLをテストプロジェクト内でロードしてそこで実行する必要があります。C++ DLLをロードする
ソリューションツリー "TestProject"
DLLProject
:
TestProject
は私がTestproject、その内で行われたビジュアル・スタジオがあり、2015年を使用しています、私は、DLLのための私のプロジェクトを作りました
I場合、私はテストするダミー関数をエクスポート
#ifndef EXPORT
#define EXPORT __declspec(dllexport)
#endif
extern "C" {
EXPORT int dummy() {
return 5;
}
}
その後、私のTestprojectで、私は、DLLをロードする機能を抽出し、それを実行しよう:DLLをロードすることができる午前
#include <windows.h>
#include <iostream>
using namespace std;
typedef int (__stdcall *dll_func)();
int main() {
HINSTANCE hGetProcIDDLL = LoadLibrary(TEXT("H:\\path\\to\\project\\Debug\\DLLProject\\DLLProject.dll"));
if (hGetProcIDDLL == NULL) {
cout << "DLL could not be loaded. " << GetLastError() << endl;
return;
}
dll_func f = (dll_func)GetProcAddress(hGetProcIDDLL, "create");
if (f == NULL) {
cout << "Factory function could not be resolved. " << GetLastError() << endl;
return;
}
cout << "Factory function returns: " << f() << endl;
}
私はthis questionからほとんどすべてをコピーしました。 残念ながら、私は私のTestprojectを実行して、私のコンソールのプリントアウト:「DLLをロードできませんでした4250」
この時点で、私は本当に何をするか分からない説明hereとしてエラーがbasicly何も言ってないので。研究のビットで、私は答えを得ることができませんでした...あなたが私を助けてくれることを願っています:D
[procmon](https://technet.microsoft.com/en-us/sysinternals/processmonitor.aspx)を取得し、テストexeにフィルタを設定し、どのファイル操作が失敗するかを確認します。 – GSerg
多分私は、testProjectは "Visual C++/CLR /コンソール - コンソールプログラム" - プロジェクトであり、DLLProjectは "Visual C++/Windows/DLL(Universal Windows)"です - プロジェクト:D – Rockettomatoo
モニターは私に与えて、 "プロセスの作成"です。私のDLLから見えるものはありません – Rockettomatoo