|
질문하신 부분만 간단히 답해 드리겠습니다.
[in] [out] 이런 표시들은 알아보기 쉽게 하기위해서 써놓은것입니다 .
idl 파일에서 사용하기 위해서 그런것 같습니다.
HRESULT VerifyLicense(
[in] BSTR bstrName,
[in] BSTR bstrKey,
[out, retval] long* pbRetVal);
BSTR은 유니코드를 지원하기 위해서 만들어진 포멧 즉 wide char pointer형입니다.
wtypes.h 에 정의 되어 있을 겁니다.
또한 HRESULT 는 winnt.h에 포함 되어 있습니다.
지니를 한번도 안해 봐서 잘 모르겠습니다만. .
대강 읽어 보니 idl 로 정의된 interface를 통해서 c 코드를 호출하는 것같다는 생각이 ㅜ.ㅜ
조금 도움이 되셨으면 합니다.
From Zeratul
김영민 님이 쓰신 글 :
: 안녕하세요, C언어에 대해서 문의 드리고자 이렇게 글을 씁니다..^^
: 아래의 파일은 자바의 JNI를 사용하기 위해서 필요한 C언어부분입니다.
: JNI는 자바에서 만들지 않은 외부파일을 자바에서 쓰고자 할때 사용하는 인터페이스라는군요.
: 이번에 dll파일을 자바에서 쓰고 싶어서 JNI를 공부했습니다만 C언어라는 난관에 부딪혀서 이렇게 도움을 구합니다.
: 아래의 부분이 C언어 부분입니다.
:
: // NativeHello.cpp
: //
:
: #include "stdafx.h"
: #include "NativeHello.h"
:
: BOOL APIENTRY DllMain( HANDLE hModule,
: DWORD ul_reason_for_call,
: LPVOID lpReserved
: )
: {
: return TRUE;
: }
:
: ------------------------------------------------------------------------------------------
: JNIEXPORT void JNICALL Java_NativeHello_SayHelloWorld(JNIEnv *, jobject)
: {
: MessageBox(NULL, "java에서 호출한 messagebox", "Hello, World", MB_OK);
: }
: ------------------------------------------------------------------------------------------
:
: 위의 부분은 자동으로 생성이 되며 자바에서 만들어지는 이 부분 #include "NativeHello.h"만 추가해주면 됩니다
: 문제는 -------- 실선사이에 있는 부분입니다.
: 지금 보시는 부분은 win32 dll(맞나?)을 사용한 부분이며 JNI를 설명할 때 예제에서 흔히 나오는 부분입니다.
:
: 저는 MessageBox대신 아래의 VerifyLicense를 호출하고자 합니다.
:
: VerifyLicense부분
: HRESULT VerifyLicense(
: [in] BSTR bstrName,
: [in] BSTR bstrKey,
: [out, retval] long* pbRetVal);
:
: VerifyLicense is the method must be called before all other methods.
: It's to verify the run time license information.
: @param BSTR bstrName: The register name
: @param BSTR bstrKey: The register key code.
: @param long* pbRetVal: 1 If verify license cuccessfully.
: 0 If something wrong with the name/key
: This variable always be set to 1 in trial version
: @return S_OK
:
:
: C 언어를 잘 모르므로 어디까지가 소스이며 골뱅이 부분(@부분)은 뭘 말하는지도..잘 모르겠네요.
:
: 어떤식으로 호출을 해야 할까요..?
:
: 저는VerifyLicense부분이 메소드라고 생각해서
: HRESULT VerifyLicense(
: [in] BSTR bstrName,
: [in] BSTR bstrKey,
: [out, retval] long* pbRetVal);
:
: 이렇게 넣었더니 [in]에서 에러가 발생…
: 그래서 [in]을 삭제했더니 BSTR이 정의되지 않았다는 에러가 발생했습니다
:
: 그래서 에러가 나는 부분을 지우고 다시 컴파일을 해봤습니다.
:
: HRESULT VerifyLicense(BSTR bstrName, BSTR bstrKey, long* pbRetVal);
:
: 이렇게 만들어 넣어봤더니 에러가 3개가 뜨는군요
: 1. BSTR이 정의되어있지 않습니다.
: 2. 구문에러 ; ‘)’가 식별자’bstrName’의 앞에 필요합니다.
: 3. 구문에러 ; ')'
:
: 어떤식으로 해야할지 부탁드립니다.
: Ps. HRESULT부분에서도 정의되지 않았다는 에러가 뜨겠지요?
: 어디 부분에서 변수 정의를 해야 하는지요…
:
: 장황한 글 읽어주시느라 수고하셨습니다.
: 감사드립니다..
: 이왕이면 그냥 가지 마시고 힌트라도 휙 던져주고 가시기 바랍니다..
: 항상 즐거운 일 있으시길..
|