“LNK2022: операция метаданных привела к сбою” управление мной безумный

Вы можете изменить выражение SQL where вашего запроса на:

where
(
    [Forms]![MJidea]![PriStReport] is not null and
    [Primary Street] like "*" & [Forms]![MJidea]![PriStReport] & "*"
) or
(
    [Forms]![MJidea]![PriStReport] is not null and 
    [Secondary Street] like "*" & [Forms]![MJidea]![PriStReport] & "*"
) or
(
    [Forms]![MJidea]![District] is not null and 
    [Magisterial District] like "*" & [Forms]![MJidea]![PriStReport] & "*"
)

В качестве альтернативы, объединяя первые два теста:

where
(
    [Forms]![MJidea]![PriStReport] is not null and 
    (
        [Primary Street]   like "*" & [Forms]![MJidea]![PriStReport] & "*" or 
        [Secondary Street] like "*" & [Forms]![MJidea]![PriStReport] & "*"
    )
) 
or
(
    [Forms]![MJidea]![District] is not null and 
    [Magisterial District] like "*" & [Forms]![MJidea]![PriStReport] & "*"
)
24
задан Glorfindel 13 March 2019 в 23:01
поделиться

3 ответа

Microsoft ответила на мою публикацию в Connect, предложив гораздо лучший обходной путь:

Похоже, проблема вызвана несоответствие версии между два .objs. Лучшее решение - заменить

[сборка: AssemblyVersionAttribute ("1.0. *")];

с

[сборка: AssemblyVersionAttribute ("1.0.0.1")];

в AssemblyInfo.cpp. Это обеспечит что версия не меняется между инкрементными сборками.

Это работает для меня, и, очевидно, это предпочтительнее, чем отключение функции.
В любом случае принятый ответ был выбран и теперь не может быть изменен: (

11
ответ дан 28 November 2019 в 23:49
поделиться

Попробуйте это в xxx.cpp и xxx2.cpp:

#ifndef _PROTECT_MY_HEADER
#define _PROTECT_MY_HEADER
#include  "inc.h"
#endif

#pragma, один раз , недостаточно для защиты заголовка в этом случае.

1
ответ дан 28 November 2019 в 23:49
поделиться

Эта проблема вызвана новой функцией управляемого управляемого построения в Visual Studio 2008. Как вы заметили, метаданные изменились, но не так, как функция управляемой инкрементной сборки считает существенной. Однако, если вы принудительно перекомпилируете один из файлов cpp, он захватывает новые метаданные, встраивает их в obj, и тогда компоновщик видит конфликт.

Есть два способа решить эту проблему. Простой способ, который, кажется, работает, из ответа demoncodemonkey ниже состоит в том, чтобы указать явный номер версии в метаданных ссылочной сборки, чтобы указать компилятору, что указанная сборка фактически имеет ту же версию:

Replace

  [сборка: AssemblyVersionAttribute ( "* 1.0")];

с

  [сборка: AssemblyVersionAttribute ( "1.0.0.1")];

в AssemblyInfo.cpp. Это гарантирует, что версия не переключаться между инкрементными сборками.

Альтернативный способ избежать этой проблемы - отключить эту функцию. Мы можем перекомпилировать некоторые файлы cpp без необходимости, но это лучше, чем при сбое компоновщика.

В свойствах проекта в разделе «Свойства конфигурации»> «Общие» установите «Enable Managed Incremental Build» в значение No.

24
ответ дан 28 November 2019 в 23:49
поделиться
Другие вопросы по тегам:

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