Смешанный C++ / CLI TypeLoadException Внутреннее ограничение: слишком много полей

Многие сайты используют AJAX для динамического добавления / отображения / изменения контента. Иногда он используется вместо навигации по сайту, поэтому текущий URL-адрес изменяется программно, а сценарии содержимого в этом случае автоматически не выполняются браузером, так как страница не извлекается с удаленного сервера целиком.


Обычные JS-методы обнаружения изменений страницы, доступные в сценарии контента .


Специфические расширения: обнаружение изменений URL на странице background / .

Для работы с навигацией существует расширенный API: webNavigation , webRequest , но мы будем использовать простой chrome.tabs.onUpdated прослушиватель событий, который посылает сообщение к скрипту содержимого:

  • manifest.json: declare background / event page объявить скрипт содержимого добавить "tabs" разрешено .
  • background.js
    var rxLookfor = /^https?:\/\/(www\.)?google\.(com|\w\w(\.\w\w)?)\/.*?[?#&]q=/;
    chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
        if (rxLookfor.test(changeInfo.url)) {
            chrome.tabs.sendMessage(tabId, 'url-update');
        }
    });
    
  • content.js
    chrome.runtime.onMessage.addListener(function(msg, sender, sendResponse) {
        if (msg === 'url-update') {
            doSomething();
        }
    });
    

6
задан Deduplicator 13 December 2014 в 05:51
поделиться

3 ответа

Удостоверьтесь, что опция Enable String Pooling при Генерации кода C/C++ включена.

Это обычно устраняет эту проблему, которая является одним из тех "ха?" Ограничения MS как 64k ограничивают на электронных таблицах Excel. Только это влияние количество символов, которые могут появиться в блоке.

8
ответ дан 8 December 2019 в 18:44
поделиться

Необходимо ли повернуть сброс / на для всего проекта? Вы могли вместо этого включить его только для маленького избранного количества файлов и быть очень осторожными, как Вы включаете управляемый код? Я работаю с большим C++ / приложение MFC, и мы нашли очень трудным использовать управляемый С++. Я люблю C# и.NET, но управляемый С++ был только головной болью. Большинство наших проблем произошло с.NET 1.0/1.1..., возможно, вещи лучше теперь.

3
ответ дан 8 December 2019 в 18:44
поделиться

Я сделал это с очень большим смешанным режимом (C#/C ++) приложения три раза (3x) и после того как помещение вышеупомянутого фиксирует в место, никогда не видели ошибки снова.

И не, если что-нибудь это должно привести к немного более быстрому выполнению во время выполнения (ничто Вы могли бы когда-либо иметь размеры, как бы то ни было.)

Но я соглашаюсь, что это - своего рода временная мера. Внутренний предел на символы не использовал, чтобы быть проблемой, или если это было, тот предел был намного выше. Затем MS изменил часть кода загрузчика. Я добрался на MSDN и разглагольствовал об этом и был сказан недвусмысленно, "только идиот поместит это много символов в единственный блок".

(Который является одной из причин, я больше не участвую на MSDN.)

Ну, окрасьте меня глупым, но я не думаю, что мне придется изменить физическую структуру моего приложения, выломав вещи в спутниковый DLLs, просто для обхождения того, что загрузчик решил, что 10 001 символ равняется 1 слишком многие.

И поскольку Вы указали, мы часто не управляем, как блоки/спутник, DLLs являются структурой и видом зависимостей, которые они содержат.

Но я не думаю, что Вы будете видеть эту ошибку снова в любом случае.

2
ответ дан 8 December 2019 в 18:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: