Я знаю, что это может показаться довольно простым для гиков. Но я хочу, чтобы это было предельно ясно.
Когда я хочу использовать Win32 DLL, обычно я просто вызываю такие API, как LoadLibrary () и GetProcAdderss (). Но в последнее время я работаю с DirectX9, и мне нужно добавить файлы d3d9.lib , d3dx9.lib и т. Д.
Я слышал достаточно, чтобы LIB предназначался для статической связи и DLL для динамического связывания.
Таким образом, в настоящее время я понимаю, что LIB содержит реализацию методов и статически связан во время компоновки как часть окончательного EXE-файла. Хотя DLL динамически загружается во время выполнения и не является частью окончательного EXE-файла.
Но иногда есть некоторые LIB-файлы , поставляемые с DLL-файлами, поэтому:
После проверки википедии я помню, что эти файлы LIB называются библиотека импорта . Но мне интересно, как это работает с моим основным приложением и динамически загружаемыми DLL.
Как и сказал RBerteig, в файлах LIB есть некоторый код заглушки, созданный с помощью DLL. Таким образом, вызывающая последовательность должна выглядеть следующим образом:
Мое основное приложение -> заглушка в LIB -> настоящая целевая DLL
Так какая информация должна содержаться в этих LIB? Я мог бы подумать о следующем:
Прав ли я в этом? Есть ли что-то еще?
Кстати: есть ли инструмент, который может проверять библиотеку импорта? Если я это увижу, сомнений больше не будет.
Ваш обновленный метод является правильным, просто требуется такая настройка:
$('.selector').click(function(){
var obj = $(this),
repl = $('<div class="size">whats up man ??! <span class="medium"></span></div>');
obj.replaceWith(repl);
alert(repl.find('span').attr('class'));
});
Вы можете проверить это здесь. Важным изменением является repl.find()
для поиска нового элемента вместо старого.
почему вы хотите это сделать? вы знаете, на что вы его заменили....
$(document).ready(function(){
$('.selector').click(function(){
var obj = $(this);
var replacement = $('<div class="size">whats up man ??!</div>');
obj.replaceWith(replacement);
alert(replacement.html());
});
});