2012-04-18 6 views
2

Я изначально нанял кого-то, чтобы закодировать dll для меня, и я использовал скомпилированную dll, которую он мне дал, но у него всплывающее окно msgbox, которое мне нужно было удалить. Поэтому я удалил это из кода и пошел перекомпилировать. Его код нуждался в библиотеке QtCore, поэтому я ее загрузил и установил. Но в этой библиотеке я получаю много ошибок, все ошибки являются синтаксической ошибкой: <cv-qualifer>Ошибка компиляции C++: '<cv-qualifer>'

Ошибка синтаксиса в googled: <cv-qualifer>, но это кажется довольно распространенной ошибкой.

Каждая строка, которая имеет эту ошибку начинается с «ASM неустойчивыми (»

Я предполагаю, что асмовый сборка? Могу ли я что-то отсутствует мне нужно компилировать что?

Любая помощь будет принята с благодарностью.

Благодаря

EDIT: Полный код ошибки: ошибка C2059: синтаксическая ошибка:. «» Вот источник, где это происходит, как только Everytime это происходит его начинается с ASM неустойчивыми

asm volatile("0:\n" 
      "ldrex %[result], [%[_q_value]]\n" 
      "eors %[result], %[result], %[expectedValue]\n" 
      "strexeq %[result], %[newValue], [%[_q_value]]\n" 
      "teqeq %[result], #1\n" 
      "beq 0b\n" 
      : [result] "=&r" (result), 
       "+m" (_q_value) 
      : [expectedValue] "r" (expectedValue), 
       [newValue] "r" (newValue), 
       [_q_value] "r" (&_q_value) 
      : "cc", "memory"); 
+2

это поможет, если вы добавите ошибки, а также – UmNyobe

+0

Какой компилятор вы используете? – bames53

+0

UmNyobe, я сделал. Он находится в заголовке и в сообщении. Вам нужно что-то еще? Bames53, Visual Studio 2008. – user1088794

ответ

4

У вас есть QT в качестве источника для ARM. Вы строите ARM? Вам нужно построить QT из источника?

+0

Код, который мне нужно скомпилировать, имеет это #include #include Итак, я просто включил папку Qt include. – user1088794

+1

Ну, вы не можете использовать его версию ARM :) Что касается языка ассемблера ARM, вы, скорее всего, используете Intel. – Tobias

+0

Ооооооооооооооооооооооооооооооооооолно, я дважды проверил и понял, что я включил неправильную папку с инсталляцией! .. переключись на правильную, и она работает! .. Большое спасибо – user1088794

0

cv является стандартным сокращением для const и/или volatile. Я предполагаю, что ключевое слово volatile является виновником.

asm volatile должен указывать на побочные эффекты в коде ассемблера, чтобы код asm не перемещался. Он выглядит как расширение gcc, которое Visual Studio does differently.

Попробуйте __asm ​​volatile и посмотрите, что произойдет. Нет, все еще gcc специфический.

Проверьте MS documentation. Они используют __asm ​​с co cv квалификацией.

+0

Когда я пытаюсь __asm ​​или _asm, я получаю массу разных ошибок во всем мире. Я знаю, что это не полезный ответ вам, но его, как 200 ошибок, поэтому не совсем уверены, как дать вам все подробности LOL. – user1088794

+0

Я думаю, что проблема может быть 1) asm volatile gcc-specific, 2) __asm ​​(без изменчивости) - это то, как MS делает встроенную сборку - asm не работает, очевидно; 3) Настоящий кикер - MS __asm ​​использует другой язык ассемблера. Похоже, что вы переносите что-то из gcc (возможно, linux) в windows. asm по своей природе не переносится. Есть ли способ узнать, что делает этот блок asm и кодировать их в прямом C++? Тогда беспокоиться о asm позже (или совсем нет)? – emsr

+0

Я удивлен, что у библиотеки Qt возникнет такая проблема. Они выталкивают кросс-платформенные проблемы. Вы перекрестно компилируете из Windows x86 в нечто другое? Кроме того, вам не придется/не нужно менять код библиотеки Qt. Что-то больше происходит. – emsr

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