我想从内存中加载单声道程序集。因此,我没有使用通常的 mono_domain_assembly_open ,而是使用mono_image_open_from_data。返回的图像和程序集都正常,状态为MONO_IMAGE_OK。
m_valid = true;
mono_set_dirs(assembliesDir.c_str(), configDir.c_str());
MonoImageOpenStatus status = MONO_IMAGE_ERROR_ERRNO;
m_image = mono_image_open_from_data(data, size, 1, &status);
if(status != MONO_IMAGE_OK || m_image == NULL) {
m_valid = false;
return;
}
m_assembly = mono_assembly_load_from( m_image, assembliesName.c_str(), &status);
if(status != MONO_IMAGE_OK || m_assembly == NULL) {
m_valid = false;
return;
}
但是,当我尝试使用以下方法从程序集中获取类时:
MonoClass *my_class = mono_class_from_name (m_image, name_space.c_str(), name.c_str());
我得到my_class == NULL。当我使用通常的mono_image_open_from_data单声道返回一个有效的类实例。我怀疑该方法无法正确加载所有引用。您有什么建议或解决方法吗?