Clrdump (C++) ошибка LNK2019: неразрешенная внешняя ссылка __imp__RegisterFilter@8, на который ссылаются в функции _main

Во-первых, создайте класс, в котором объявлены все значения, которые вы хотите вернуть назад , а также получатель / установщик из этой переменной. Т.е. предположим, переменная user.

import java.util.*;

public class Abc{

    private String user;
    public String getUser() {
        return user;
    }

    public void setUser(String user) {
        this.user = user;
    }



    public Abc(String user) {
        this.user = user;

    }
}

Далее, в ваш файл ProductSearch.java введите этот код:

 protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        // TODO Auto-generated method stub

        String searchTerm = request.getParameter("Search");
 ArrayList<Abc> ab= new ArrayList();


try
  {

String sql1 ="select * from products where name like %?%";

PreparedStatement ps = conn.prepareStatement(sql1);

ps.setString(1,searchTerm);

resultSet = ps.executeQuery();
while(resultSet.next())
{

   Abc b=new Abc();
    b.setUser(resultSet.getString("user"));
     ab.add(b);

 }

request.setAttribute("r1", ab);      
request.getRequestDispatcher("productSearch.jsp").forward(request, response);


   }

catch(Exception s2)
{
   s2.printStackTrace();
}

    }
}

Наконец, распечатайте результат обратно на страницу productSearch.jsp , используя jstl [1110 ]

<!-- this is use because we use jstl tag-->
    <%@taglib uri="http://java.sun.com/jstl/core_rt" prefix="c" %>

    <table align="center"  border="1">


    <tr bgcolor="#d9ac26">

    <td><b>search</b></td>


    </tr>
  <!--Here we are printing result-->
    <c:forEach var="book" items="${r1}">

        <tr bgcolor="">

            <td>${book.user}</td>
        </tr> 
    </c:forEach>
    </table>

Надеюсь, это поможет вам. Сделайте необходимые изменения согласно вашему требованию. Это не полный код.

5
задан Sampson 23 June 2011 в 14:17
поделиться

3 ответа

Я создавал простое приложение Win32 c ++ в VS2005 и получал следующую ошибку:

LNK2019: unresolved external symbol __imp__somefunction

Это приложение использовало листы свойств, поэтому ему требовался этот заголовок (prsht.h).

Решение моей проблемы было следующим: в программе Свойства → Свойства конфигурации → Компоновщик → Общие я установил Дополнительные каталоги библиотек на "C: \ Program Files \ Microsoft Visual Studio 8 \ VC \ PlatformSDK \ Lib ".

Также в программе Свойства → Свойства конфигурации → Компоновщик → Командная строка для Дополнительные параметры , я добавил ComCtl32.Lib ComDlg32.Lib .

Моя программа теперь компилируется без проблем. Мои два цента: вам нужно указать все библиотеки, которые требуются вашей программе. Подсказка: проверьте все заголовки, которые вы включили, вы должны убедиться, что ваш компоновщик может их видеть.

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

Попытайтесь включить подробный вывод для своего компоновщика (обычно переключатель командной строки). Это покажет Вам точно, как компоновщик пытается разрешить символ, таким образом, Вы видите если:

  • подпись символа - то, что Вы ожидаете
  • компоновщик смотрит в правильном месте для Вашей библиотеки

Я надеюсь, что это помогает!

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

__imp_ префикс указывает, что компоновщик ожидает, что эта функция будет импортирована из DLL.

clrdump библиотека от этой страницы? Если так, отметьте это extern "C" не используется в заголовочном файле, предоставленном библиотекой. Я подтвердил это использование следующей команды:

dumpbin /exports clrdump.lib

который производит следующий вывод для RegisterFilter - это - искаженное имя функции C++:

?RegisterFilter@@YGHPBGK@Z (int __stdcall RegisterFilter(unsigned short const *,unsigned long))

Я пытался создать пример программы с помощью clrdump.lib использующий Visual Studio 2008. Вот мой код:

#include <windows.h>
#include "ClrDump.h"

int _tmain(int argc, _TCHAR* argv[])
{
    RegisterFilter(L"", 0);
    return 0;
}

Создание этого произвело следующую ошибку компоновщика:

LNK2019: unresolved external symbol "__declspec(dllimport) int __stdcall RegisterFilter(wchar_t const *,unsigned long)" (__imp_?RegisterFilter@@YGHPB_WK@Z)

Код создает хорошо с Visual C++ 6.0.

Заметьте что dumpbin вывод показывает первый параметр RegisterFilter как unsigned short const * но ошибочные шоу компоновщика wchar_t const *. В Visual C++ 6.0, wchar_t обычно определение типа для unsigned short, тогда как в более поздних версиях это - отличный встроенный тип.

Для работы вокруг проблемы в Visual Studio 2008 я установил опцию "Treat wchar_t as Built-in Type" на "Нет" (указать /Zc:wchar_t- на командной строке компилятора), и код теперь создает OK.

Извините за беспорядок с моим предыдущим ответом. Я надеюсь, что это более полезно!

14
ответ дан 18 December 2019 в 05:50
поделиться
Другие вопросы по тегам:

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