Измените стандартную библиотеку, которая связана с использованием libstdc++
вместо libc++
- проблема в том, что другая библиотека была скомпилирована с использованием режима g++
, который использует библиотеку libstdc++
.
Рассмотрим следующий пример кода:
dhcp-191:~/Development/testy/fred% cat fred.cpp
#include <iostream>
#include <string>
#include "fred.h"
using namespace std;
bool dofred(string &x)
{
cout << x << endl;
return true;
}
dhcp-191:~/Development/testy/fred% cat fred.h
#include <iostream>
#include <string>
bool dofred(std::string &x);
dhcp-191:~/Development/testy/fred% clang++ -stdlib=libc++ -shared -o fred.dylib fred.cpp
dhcp-191:~/Development/testy/fred% nm fred.dylib | c++filt | grep dofred
0000000000000fa0 T dofred(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >&)
dhcp-191:~/Development/testy/fred% clang++ -stdlib=libstdc++ -shared -o fred.dylib fred.cpp
dhcp-191:~/Development/testy/fred% nm fred.dylib | c++filt | grep dofred
0000000000000e30 T dofred(std::string&)
Вы получите два совершенно разных экспортированных символа. При попытке использовать символ приложение, которое использует тот же флаг -stdlib
, сможет связываться, в то время как приложение, которое не отображает ошибку ссылки.
http://learnwpf.com/post/2006/06/04/How-do-I-Include-Vector-Based-Image-Resources-in-my-WPF-Application. aspx объясняет, как это сделать.
<ContentControl Template="{StaticResource Credit-Card}" />