나는 이것을 알아 내려고 많은 시간을 보냈다. 그래서 나는 여기서 도움을 얻을 수 있다고 생각했다.C++/C에서이 DLL 함수를 호출하는 방법
[id(1), helpstring("method findFile")] HRESULT findFile(
[in] BSTR fileName,
[out] LONG* someValue
);
가 정확히 어떻게 내가 선언하고 C++/C#을 하나에서 호출을 수행합니다 는 기본적으로 나는 IDL에 다음과 같이 선언 된 DLL 기능이?
참고 :이 기능을 성공적으로 호출하는 VB6 앱이 있습니다. 선언은 다음과 같습니다
는Private Declare Function findFile Lib "thedll.dll" (_
ByVal fileName As String, _
ByRef someValueAs Long _
)
호출 :
Dim a As String
Dim b As Long
Dim r As long
a = "image.jpg"
b = -1
r = findFile(a, b)
부록는 :
내가 실행 파일을 가지고 있기 때문에 VB6 코드가 같다고 보장 할 수 없습니다, 나는 무엇을 그에게 말했다 만했다 부분이 비슷해 보이므로 여러분이 옳고 일치하지 않을 수 있습니다. 나는 C++ DLL을 저작했고, 이제는 물건을 시험해보고 그 exe에 의존하지 않기 위해 DLL을 성공적으로 호출하는 코드를 함께 모을 필요가있다. DLL 함수의
C++ 구현은 다음과 같습니다
STDMETHODIMP CFinder::findFile(BSTR fileName, LONG* someValue)
{
*someValue = 8;
return S_OK;
}
나는 다소 회의적인 존재하고있다. 이 함수를 선언하면 (TLB 파일을 사용하는 것과 반대), 1)'fileName'이 잘못된 방식으로 정렬 될 것이기 때문에 실패 할 것입니다. 2)'Variant'의 반환 값은 스택의 불균형을 일으킬 것입니다 ('Long '). – GSerg
함수를 선언하는 C++ 소스 코드를 보여주십시오. –
있습니다. 나는 ATL을 사용했다. –