2012-12-24 1 views
0

DLL 또는 Visual Studio를 작성하는 데 많은 경험이 없습니다. 기본적으로 비 VS (즉, Qt) 프로젝트에서 Visual Studio로 작성된 DLL을 사용하려고합니다. 기본 DLL (VS2010)에 대한 .h 파일은 다음과 같습니다비 VS 프로젝트에 VS DLL 포함

// test-lib.h 

#pragma once 

using namespace System; 

namespace testlib { 

    public ref class Class1 
    { 
     //... 
    }; 
} 

나는 아무 문제없이 DLL을 만들 수 있어요,하지만 난 내 Qt는 프로젝트에 포함하는 방법을 모르겠어요. 그게 내가 컴파일 할 때 나는뿐만 아니라 그것으로 지어진 VS2012의 컴파일러와 Qt는 내 버전으로 컴파일하고있어 사실에도 불구

..\test-lib.h:6: error: C2871: 'System' : a namespace with this name does not exist ..\test-lib.h:10: error: C2059: syntax error : 'public' ..\test-lib.h:11: error: C2143: syntax error : missing ';' before '{' etc.

이것은를 얻을 수있다. 아무도 내가이 일을 어떻게 할 수 있는지 안다? 내 .pro 파일에 현재 LIBS에 추가 된 dll이 있는데 추가 할 필요가있는 다른 DLL이 있습니까?

+0

당신의 질문은 'C++'라고 태그가 붙어 있지만 코드는 그렇지 않습니다. Qt 프로젝트에서 네이티브 코드 또는 관리되는 .NET 어셈블리와 함께 .dll을 사용 하시겠습니까? – IInspectable

+0

@Tim Qt 코드를 가능한 한 Windows가 없도록하고 싶습니다. 그래서 가능하다면 .NET이나 Qt 내의 어떤 것도 사용할 수 없습니다. VS에 반대하는 것은 없습니다. 이식성이 필요합니다. 저는 VS2012 C++을 사용하고 있습니다. 그래서 제가 작업하고있는 것은 대부분 C++입니다. VS를 전처리하는 것의 맨 위에 레이어가 있습니다 (Qt는 MOC 레이어를 가짐). 그래서 나는 C++ 태그가 합리적이라고 생각한다. Qt는 C++ 기반이고'#include' 구문은 C/C++ - 특정이다. –

+0

나는 여전히 혼란 스럽다. '# include' 전처리 지시어가 실제로 C++ 인 반면, _test-lib.h_ 헤더 파일은 그렇지 않습니다. 그것은 C++/CLI처럼 보입니다 - 구문에 관한 한 - C++의 수퍼 셋입니다. 그러나 네이티브 코드로 컴파일되지 않으며 .NET 런타임이 필요합니다. – IInspectable

답변

1

당신의 DLL은 기호 수출과 C로 작성되어 있다고 가정하고, 등

typedef void (*NameOfMyDLLFunction)(double* data, int size); 
QLibrary* myLibrary = new QLibrary("NameOfMyLibraryFile", this); 

myLibrary->load(); 

NameOfMyDLLFunction dllFunction = reinterpret_cast<NameOfMyDLLFunction(myLibrary->resolve("dllFunction ")); 

지금 당신은 당신의 dllFunction(double* data, int size)를 호출 할 수 있습니다.