когда я прочитал исходный код fileIO :: read(). У меня возникла проблема. Прежде всего, FileIO :: Read() Исходный код:реализация FileIO :: Read()
enter int32_t FileIO::Read(int64_t offset,
char* buffer,
int32_t bytes_to_read,
const CompletionCallback& cc)
{
if (has_interface<PPB_FileIO_1_1>()) {
return get_interface<PPB_FileIO_1_1>()->Read(pp_resource(),
offset, buffer, bytes_to_read, cc.pp_completion_callback());
} else if (has_interface<PPB_FileIO_1_0>()) {
return get_interface<PPB_FileIO_1_0>()->Read(pp_resource(),
offset, buffer, bytes_to_read, cc.pp_completion_callback());
}
return cc.MayForce(PP_ERROR_NOINTERFACE);
}
мы можем видеть, что через get_interface(), мы получаем проблему Func Pointer.the в том, как получить этот указатель. то я найти исходный код get_interface:
template <typename T> inline T const* get_interface() {
static T const* funcs = reinterpret_cast<T const*>(
pp::Module::Get()->GetBrowserInterface(interface_name<T>()));
return funcs;
}
, а затем исходный код GetBrowserInterface(),
const void* Module::GetBrowserInterface(const char* interface_name) {
return get_browser_interface_(interface_name);
}
Module::Module() : pp_module_(0), get_browser_interface_(NULL), core_(NULL){}
мы можем видеть, что, когда построить модуль, мы устанавливаем get_browser_interface_ в NULL, и я нигде не обнаружил, что InternalInit() Func вообще не был вызван. , так что это путает, как получить Read() Pointer.And где исходный код реализации Read()? Спасибо.
большое спасибо! Кроме того, у меня есть другой вопрос. Я использую VS2012 для компиляции source.and сгенерировать libs.But существует несоответствие между символами, которые libs и VS2012 компилируют результат. Например, функция pp :: Instance :: Init (uint32_t, const char *, const char *,) Я использую эту функцию в своем projiect.And я использую libs, которые я создал VS2012.Но компилятор говорит, что не может найти символ? Pp :: Instance :: Init2h3j2 (Конечно, имя искажено, i не помню точное имя). И я использую dumpbin для экспорта символов libs.I узнать символы (после искалеченных) разные. – FT9
Это смущает меня, я использую VS2012 для генерации libs, и я использую VS2012 для компиляции моего projiect, почему один и тот же символ отличается от искаженного? Он должен быть тем же механизмом переключения? Является ли MAKEFILE worng? – FT9
Я бы предложил просмотреть аргументы командной строки, используемые при компиляции как библиотек, так и исполняемого файла. Возможно, вы сможете найти расхождение, из-за которого имена будут искажены по-разному. – binji