2017-03-14 6 views
0

実験的なC++ファイルシステムを使用してプログラムをコンパイルしようとしていますが、プログラムをリンクしようとすると異常な動作をします。私はfs :: pathを作ることができますが、関数を呼び出すとリンカーエラーが発生します。<experimental/filesystem>を使用して関数を呼び出すとリンカエラーが発生する

g ++。exe(i686-posix-dwarf、MinGW-W64プロジェクトで構築)を使用してWindows 10でコンパイルしています。

次のコードはコンパイルされます。

CC   = g++ 
CFLAGS  = -std=c++11 -MP -MD -fPIC 

OUTPUT: 
g++ build/Engine.o ... -o bin/libquestia-eng.1.0.0.dll -L lib/SFML-2.4.2-win/lib -lsfml-audio -lsfml-network -lsfml-graphics -lsfml-window -lsfml-system -lstdc++fs -shared 

エラー:

任意の関数を使用しようとすると

namespace fs = std::experimental::filesystem::v1; 

bool utl::doesExist(const std::string& fileLocation) 
{ 
    fs::path path(fileLocation); 
    std::cout << path << std::endl; 
    return true; 
} 

をしかし、私は同じエラーに

bool utl::doesExist(const std::string& fileLocation) 
{ 
    fs::path path(fileLocation); 
    return fs::exists(fileLocation); 
} 

Makefileを取得します

C:/MinGW/bin/../lib/gcc/i686-w64-mingw32/6.1.0/libstdc++fs.a(ops.o):(.text$_Z10_wrealpathPKwPw+0x68): undefined reference to `[email protected]' 

C:/MinGW/bin/../lib/gcc/i686-w64-mingw32/6.1.0/libstdc++fs.a(ops.o):(.text$_Z10_wrealpathPKwPw+0x121): undefined reference to `[email protected]' 

私は問題がdllであるターゲットにあるかもしれないと思っていますが、インターネットを検索しても解決策はありません。このリンカエラーが何を意味するかについての任意のアイデア?

答えて

1

リンクする必要のあるWindowsライブラリが自動的には含まれていないようです。リンカーが見つからないシンボル、CreateTransactionおよびCommitTransactionKtmW32.dllにありますので、KtmW32.libへの参照を含める必要があります。

+0

-lstdC++ fsの後に-lktmw32を追加してコンパイルしました。ありがとうございました! –

関連する問題