2014-12-04 6 views
0

비슷한 질문이 이전에 있지만 내 문제를 해결할 수없는 것으로 알고 있습니다. 아키텍처 불일치 예외는 Db- 드라이버와 VS- 프로젝트가 서로 다른 플랫폼 대상 (32, 64 비트)을 가질 때 프롬프트됩니다. 여태까지는 그런대로 잘됐다.ODBC DSN을 통해 Visual Studio를 Virtuoso 7.1에 연결하면 아키텍처가 일치하지 않는 예외가 발생했습니다

먼저 시도 : 전체 솔루션의 플랫폼 목표를 32로 변경 한 후 64 비트로 변경했습니다. -> 두 경우 모두 동일한 오류가 발생합니다. (VS가 프로젝트를 특정 아키텍처로 간주하는 상황이 확실하지 않습니다. 어쩌면 누군가가이 지점을 자세히 설명 할 수 있습니다 ...)

이제 나는 Virtuoso 7.1 용 드라이버 및 DSN. Virtuoso (link)의 오픈 소스 버전 설치 지침에 따라, 나는 'regsvr32 virtodbc.dll'을 사용하여/lib에 드라이버를 등록했습니다. 이것은 신속하게 32 비트 드라이버로 추가했습니다 (system32/odbcad32.exe 사용시 표시됨). DSN에서이 드라이버를 사용하면 아키텍처 불일치가 발생합니다.

64 비트 버전의 regsvr32 버전을 사용하여 동일한 dll을 성공적으로 등록하려고 시도했습니다. 적절한 64 비트 DSN을 추가 할 수 없기 때문에 32 비트 대상 CPU 사용에 만족할 것입니다. 설명한 것처럼 virtodbc.dll의 32 비트 버전은 VS의 모든 대상 플랫폼 구성에서 아키텍처 불일치를 유발합니다.

클라이언트 연결 키트 (link)를 설치하여 64 비트 드라이버 만 제공한다고도합니다. 오직 자동으로 설치된 드라이버와 DSN이 32 비트 드라이버로 제공된다는 것을 알기 위해서만 (의미 : 64 비트 버전이 아닌 32 비트 버전의 odbcad32.exe를 사용할 때만 볼 수 있음)

문제가 어디에 있는지 잘 모르겠다. (VS 또는 Virtuoso 드라이버) 나는 당신의 제안에 감사 할 것이다.

답변

1

나는 Virtuoso 6.4 Client Connectivity Kit에서 32 비트 ODBC 드라이버를 설치하려고 시도 할 수 있다고 생각한다.

p.s.

  • 64 비트 ODBC 앱 필요 64 비트 ODBC 드라이버 (64 비트 ODBC 드라이버 관리자)
  • 32 비트 ODBC 앱 필요 32 비트 ODBC 드라이버 (32 비트 ODBC 드라이버 관리자)

혼합해서 사용할 수 없습니다.

+0

이전 드라이버 (6.0.3)에서 작동했습니다. 가능한 부작용이있는 유일한 해결책이므로 '올바른'답변으로 표시하는 것을 주저합니다. 하지만 지금은 고마워. – chile

1

귀하의 문제가 무엇인지 이해하고 있는지 잘 모르겠습니다.

Visual Studio 설치의 bitness는 32 비트 또는 64 비트입니까?

system32/odbcad32.exe는 "system32"참조에도 불구하고 64 비트 ODBC 드라이버 관리자입니다. Microsoft는 32 비트 Windows 일 동안 유지 된 역사적인 폴더이며 실제 32 비트 바이너리를 sysWOW64 폴더의 64 비트 시스템에 배치합니다.

내가 개발 환경을 마지막으로 사용 된 64 비트 Visual Studio에서 상황이 더 악화하려면 32 비트 사실이며, 거장으로 http://wikis.openlinksw.com/dataspace/owiki/wiki/UdaWikiWeb/MsSqlOn64bitWin

를 참조 배포 개발 및 배포를위한 32 & 64 비트 드라이버를 필요로하는 64 비트입니다 7은 64 비트 형태로만 제공되며 Virtuoso 6 ODBC 드라이버 (일반적으로 데이터 액세스 클라이언트)는 Virtuoso 7 서버와 호환되며, Virtuoso 6 상용 (Sergei 언급) 또는 오픈 소스 (http://bit.ly/1A3mCje) 32 & 64 비트 ODBC 드라이버와 VS는 개발 ​​용과 배포 용으로 하나만 있으면 작동합니다.