2016-04-11 34 views
-2

私は間接的な文字列の形でリソースから文字列を抽出しようとしています。現在の例では、Windows 10に組み込まれているAPPSのいずれかの間接的な文字列を取りました。ただし、このコードはVisual Studio 2015でエラーを返します。理由はわかりません。SHLoadIndirectStringのLNK2019未解決の外部シンボル

定義が不足しているにもかかわらず、未解決の外部シンボルリンカエラーが発生する可能性がありますが、私の場合はMicrosoft Windows関数を使用しています。これにより正しいヘッダーファイルが含まれていますなぜVisual Studioがそのようなエラーを返すのか混乱します。

まさにこの場合、ウェブ上で有用な情報が見つかりません。ここで

は私のサンプルコードです:

#include "stdafx.h" 
#include <Shlwapi.h> 


int main() 
{ 
    LPWSTR output = L""; 
    LPWSTR input = L"@{Microsoft.BingFinance_4.8.268.0_x86__8wekyb3d8bbwe?ms-resource://Microsoft.BingFinance/Resources/ApplicationTitle}"; 
    int result = ::SHLoadIndirectString(input, output, sizeof(output), NULL); 

    // printf("String result: %s \n", output); 

    return 0; 
} 

そして、ここではエラーです:

Error LNK2019 unresolved external symbol [email protected] referenced in function _main

+0

ありがとう、私はその質問を知っているが、私はWindowsの機能に問題があると私は重複しているとは思わない、今まで私はWindowsの機能とそのような問題を経験していない私自身の実装についての質問です。 – Mario

+1

回答:http://stackoverflow.com/a/12573818/1023911に答えがあります。「共通原因が含まれています」を参照してください。最初の原因は、あなたの問題に合ったものです。ところで、Windows API関数のMSDNドキュメントを読むときには、常にどのヘッダーファイルを含めるか、リンクするライブラリを読むことができます。 –

答えて

2

(コンパイル時の定義のための)ヘッダを含むことに加えて、あなたは"Shlwapi.lib"にリンクする必要がありますリンク時のシンボル分解能。

Shlwapi.libは、プロジェクトのリンカー設定の下にある "Additional Dependencies"に追加することができます。

一般に、Windows API関数のMSDNドキュメントには、サポートされているOSやヘッダーとライブラリの使用が必要な機能の要件と可用性の説明が含まれています。

+0

私の問題を解決するのに役立つ、あなたの答えをありがとう。しかし、Shlwapi.hの関数を使用するのはこれが初めてではありません。なぜlibファイルをリンクする必要があるのか​​説明してください。 – Mario

+0

既にヘッダーに記載されている他の関数は、既にリンクしているライブラリ(プロジェクトを作成したときにあらかじめ設定されているもの)に含めることができます。ライブラリファイルへのヘッダファイルの1対1マッピングは必要ありません。 MSDNには、各機能に必要なヘッダーとライブラリファイルの説明が含まれています。 – Niall

関連する問題