2016-08-15 5 views
0

私はQt/VisualStudioアプリケーションをインストールしていないリムーバブルデバイスから起動する必要があります。ルートディレクトリに、実行可能ファイルと必要なすべてのDLLだけをディレクトリ "data"に配置したいとします。VisualStudioアプリケーションで固定DLL検索パスを設定することはできますか?

実行可能ファイルは "data"からDLLをロードする必要がありますが、 "data"へのパスは前もって設定する必要があります。 DLLの検索パスはexeファイルでハードコードされ、 "。\ data"にする必要があります。

可能でしょうか?私はVS2008を使用しています。私は各リンカーパラメータについてのドキュメントを読んだが、適切なものはまだ特定していない。

+2

は、ランチャーのヘルプあなたすることはできませんか? – mvidelgauz

+1

私はマニフェストファイルがこれを行うことができるとは確信しています:https://msdn.microsoft.com/en-us/library/aa375365(v=vs.85).aspx –

+2

[/ delayload](https ://msdn.microsoft.com/en-us/library/hf3f62bz(v = 90).aspx)、[ヘルパー機能](https://msdn.microsoft.com/en-us/library/) 09t6x5ds(v = 90).aspx) "data"ディレクトリからDLLを読み込みます。 – dxiv

答えて

0

mvidelgauzが提案したように、私はwinapiを使ってランチャーを実装しました。それは私の最初のネイティブwinapiプロジェクトでしたが、実装には実際には半時間しかかかりませんでした。

  1. 私はVS2008でデフォルトのWin32プロジェクトを作成しました。

    BOOL InitInstance(HINSTANCE hInstance, int nCmdShow)
  2. は、行削除:代わりにそれらの

    //ShowWindow(hWnd, nCmdShow); 
    //UpdateWindow(hWnd); 
    
  3. そしてが、私が追加:

    SetCurrentDirectory(L"MyPath"); 
    ShellExecute(hWnd, NULL, L"MyApp.exe", L"-l", NULL, SW_HIDE); 
    DestroyWindow(hWnd); 
    
+1

ウィンドウを使用する必要はありません(実際には使用しないでください)。ウィンドウクラスを登録し、ウィンドウを作成するなど、すべてのコードを削除します。文字通り 'SetCurrentDirectory'と' ShellExecute'という2つの関数呼び出しを持つ 'wWinMain'関数だけが必要です。 'ShellExecute'の' hWnd'パラメータは、操作がウィンドウに関連付けられていないことを意味する 'NULL'です(この場合は* should *)。 –

+0

ありがとう!試してみる。 –

関連する問題