Используя векторную графику XAML в приложении WPF

Измените стандартную библиотеку, которая связана с использованием 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, сможет связываться, в то время как приложение, которое не отображает ошибку ссылки.

15
задан M. Dudley 17 June 2009 в 13:57
поделиться