유지하려고하는 일부 코드에서 이상한 경고가 나타납니다. 현재 VC++ 버전으로 옮기기 전에 현재 환경 (Visual C++ 6.0, 예, 알고 있습니다, 고대)에서 테스트하고 있습니다. 나는이 경고를 이해하지 못한다. 그리고 내가 컴파일하고있는 EXE 목표에 어떤 영향을 줄지 모른다. 위의 IDL 파일이 더 이상 위의 라이브러리에 대한 지원을 제공하는 공급 업체가 제공하는 IDL 파일의 살짝 해킹 버전입니다경고 : Visual C++ 6의 MIDL2346 소스 : 지정된 lcid가 이전 사양과 다릅니다.
Processing C:\OSDK\Libraries\PSDll\OSDKDefs.idl
OSDKDefs.idl
.\Server\Interfaces\InterfaceDef.idl(109) : warning MIDL2346 : the specified lcid is different from previous specification
Compiling...
: 컴파일하는 동안 나는 빌드 탭에서이 출력을 얻을. 이 IDL 파일의이 주석은이 IDL 파일을 해킹 한이 프로젝트의 전 관리인이 추가했다고 생각합니다. 내 질문에, 나는이 idl 파일의 원래 수식어가 피하고 싶지 않은 몇 가지 원치 않는 문제를 다시 입력하여 주석의 값으로 LCD를 변경하여 경고를 사라지게 할 수 있습니다. lcid 란 무엇입니까과 lcid (0x409)와 lcid (0x09)의 동작 차이점은 무엇입니까? 0x400 16 진수 값을 가진 단일 비트가 토글되고 있지만 그 비트는 무엇을합니까?
DCOM/COM 코드에 대해이 공급 업체가 제공하는 일종의 테스트 도구와의 호환성을 위해 이전에 lcid (0x409) 이 lcid (0x09)로 변경되었으며 경고를 표시하는 줄이 표시되고 주석 처리되었습니다. 도구는 아래 주석에 언급되어 있습니다.
는//
// Component and type library descriptions
//
[
uuid(bbf92ab1-5031-40c2-864d-1c301f51d0ce),
// mvs04042000 - Changed back the lcid from 0x409 to 0x09. Else we have problems
// connecting from the PowerTool.
lcid(0x09), /// <<----- WARNING HERE
version(7.16),
helpfile("OsdkTlb.hlp"),
helpstring("OPC Server 7.16 Library"),
helpcontext(0x00000010)
]
library ED3Drv
{
importlib("stdole32.tlb");
[
uuid(b66ac2ca-d99e-4319-8fc0-08c0b65e65df),
appobject
]
coclass ED3Server
{
[default] interface IED3Driver;
interface IDriver;
interface IDriverMessage;
interface IDataScopeConnect;
interface IDispatch;
[source] interface IDataScopeSink;
};
};
IDL로부터 위의 사람들은 C++ DCOM 클라이언트와 (공정 제어를위한 OLE) OPC라는 스펙과 일치하는 서버를 쓸 수 있도록 설계되었다 툴킷의 일부입니다.
오케이 그럼 신비가 깊어집니다. 로케일이 변경되면 DCOM 클라이언트가 변경 될 때 dcom SERVERS가 표시되지 않을 수 있습니다. –
아니, 나는 그것이 중요해야한다고 생각하지 않는다. OPC의 LocaleID는 오류 메시지의 로케일을 결정하고 서버가 클라이언트를 제공해야하는 데 사용됩니다. 그러나 나는 많은 서버에서 이것이 중요한지 의심 스럽다. 어쩌면 코드 0x09는 버그 (테스트 도구에서?)이며 0x409 여야합니다. –
그건 나에게 의미가 있습니다. 잘못된 로케일 ID는 아무 것도 "수정"해서는 안됩니다. –