2009-07-18 2 views
1

У меня есть динамическая библиотека, которая отлично работает, и я хотел бы использовать QObject в ней. После включения заголовка «qobject.h» я компилирую adn evrything в порядке. Но когда я пытаюсь объявить QObject, компилятор всегда дает мне ошибку «идентификатор не найден». Я попробовал foward eclaration класса QObject, это не помогло. Это странно, потому что intellisense визуальной студии работает, когда я использую Qt в своей dll (например: когда я объявляю QObject, visual sdio показывает мне функции, доступные моему QObject). Есть ли что-то особенное, что я должен сделать, чтобы использовать Qt в динамической библиотеке? Должен ли я скомпилировать его с qmake сейчас, когда я использую QObject?Ссылка на Qt в динамической библиотеке

спасибо за помощь

Dave

EDIT: проблемы только кажется, происходит после того, как я включаю stdafx.h. Если я попытаюсь включить заголовки Qt после Stdafx.h, моя библиотека не скомпилируется, что даст мне синтаксические ошибки. Если я использую ссылку Qt перед включением Stdafx.h, она компилируется и работает нормально, но это бесполезно, потому что я не могу использовать Qt refenrences в моем существующем коде.

1>c:\users\dave\documents\visual studio 2008\projects\frogger\froggerdll\ftclient.cpp(47) : error C2653: 'QWidget' : is not a class or namespace name 
1>c:\users\dave\documents\visual studio 2008\projects\frogger\froggerdll\ftclient.cpp(47) : error C3861: 'find': identifier not found 

Линия, о которой идет речь, - QWidget :: find (hwnd); , и я включаю QWidget

ответ

0

Установили ли вы integration между VS и Qt? Я считаю, что вам нужно (вместо использования qmake) для приложений и библиотек. Что касается проблемы stdafx, я полагаю, вы, вероятно, должны столкнуться с конфликтующими макросами между этим заголовком и qobject (но если я правильно прочитал, вы можете обойти проблему, включив их в этот порядок, qobject first и stdafx next - что правильно?). [[По-видимому, нет, за последний комментарий OP]].

Edit: некоторые инструкции по изготовлению в/Qt работы интеграции VS являются here, если вы используете версию LGPL в Qt 4.5 - в противном случае я считаю, что интеграция продукт является коммерческим предложением. (Если вам не нужны конкретные аспекты Visual Studio, вы можете вместо этого упростить свою жизнь, используя вместо этого Qt Creator, но я понимаю, что VS и его основной компилятор C++ могут быть предпочтительными в других отношениях).

+0

Хорошо, я могу обойти его, включив их в правильном порядке, но тогда я не могу использовать QObject, поэтому он действительно не решает мою проблему. Я попробую установить интеграцию. Есть ли какие-то конкретные шаги, которые я должен предпринять, или он должен скомпилировать после этого? –

+0

Я думал, что «компилировать и работать отлично» означает именно это - возможно, вы хотите снова изменить свой вопрос, чтобы уточнить, что это не так. Я редактирую свой ответ, чтобы добавить указатель на инструкции для интеграции. –

+0

Я попытался установить интеграцию с приведенными выше инструкциями, я все равно получаю те же ошибки –

Смежные вопросы