2014-03-13 3 views
0

2008 r2가 실행되는 Jenkins CI 서버에 구축 된 C++ Windows Bluetooth 응용 프로그램이 있습니다. 응용 프로그램은 잘 빌드되고 Microsoft Bluetooth 스택이 설치된 컴퓨터에서 실행됩니다. 불행하게도, 서버 2008 r2에는 블루투스 지원이 없으므로 빌드 서버에서 gtest 유닛 테스트 프로젝트를 실행할 수 없습니다.Windows Server 2008 R2의 BluetoothGetRadioInfo에 대한 대안

단위 테스트 자체는 Bluetooth 스택을 사용하지 않지만 다른 라이브러리 코드에는 BluetoothFindFirstRadio 및 BluetoothGetRadioInfo에 대한 호출이 포함되어 있으므로 단위 테스트 응용 프로그램이 전혀 실행되지 않습니다. 이러한 호출은 Windows Server 2008 R2에는없는 bthprops.cpl에서 구현됩니다. 이외의 로컬 블루투스 장치의 주소를 획득하는 다른 방법이 있습니까

1) :

그래서 나는 여러 가지 방법으로이 문제를 해결할 수 있지만, 불행하게도 나는이 질문의 대한 답변을 찾을 수 없습니다 BluetoothGetRadioInfo? 이렇게하면 bthprops.cpl에 대한 링크 의존성을 깨뜨릴 수 있습니다.

2) bthprops.cpl 라이브러리가 컴퓨터에 있다고 생각하여 Windows Server 2008을 속일 수있는 방법이 있습니까? 또는 실행 가능한 유닛 테스트 실행 파일을 거기에 있다고 생각하도록 속일 수 있습니까?

3) Windows Server에서 컴파일 타임에 인식하여 유닛 테스트 프로젝트에서 #ifdef 함수를 사용할 수 있습니까?

감사합니다.

+0

추가 정보 : "컴퓨터에서 bthprops.cpl이 없기 때문에 프로그램을 시작할 수 없습니다.이 문제를 해결하려면 프로그램을 다시 설치하십시오."라는 팝업 창이 나타나면서 단위 테스트 exe가 실패합니다. exe에서 리턴 코드는 -1073741515 (C0000135) – Pickles

답변

1

LoadLibrary/FreeLibrary 및 GetProcAddress를 사용하여 BluetoothFindFirstRadio/BluetoothGetRadioInfo/...의 함수 포인터를 얻으므로 시스템 오류없이 응용 프로그램을 정상적으로 실행할 수 있습니다 ("bthprops.cpl이 없기 때문에 프로그램을 시작할 수 없습니다. 이 문제를 해결하려면 프로그램을 다시 설치하십시오. ") bthprops.cpl이든 상관 없습니다.

여러분에게 도움이되기를 바랍니다.

+0

입니다. 감사합니다.이 질문은 완전히 합리적이며 명확하게이 문제를 해결할 것이기 때문에 답변으로 표시하고 있습니다. 필자는 인터페이스 뒤에이 기능을 숨기고 결국 블루투스 라이브러리에 링크 할 필요가 없게되었습니다. – Pickles

관련 문제