2012-09-02 3 views
2

Visual Studio에서 VC++ DLL (C++/CLI) 및 VB.Net 응용 프로그램으로 구성된 솔루션을 만들려고합니다.VB.Net의 VC++ DLL 문제 해결

mathfuncs.cpp :

#include "MathFuncs.h" 
namespace MathFuncs 
{ 
    double MyMathFuncs::Add(double a, double b) 
    { 
     return a + b; 
    } 
} 

mathfuncs.h :

이 문제를 파악하기 위해, 나는 다음과 같은 코드를 사용하는 VC++ 클래스 라이브러리 프로젝트를 생성 (I 마법사가 생성하는 모든 쓰레기를 제거)
using namespace System; 
namespace MathFuncs 
{ 
    public ref class MyMathFuncs 
    { 
    public: 
     static double Add(double a, double b); 
    }; 
} 

아주 쉽게 컴파일됩니다. 그때, 솔루션에 VC++ 콘솔 프로젝트를 추가 새로운 프로젝트의 원본 프로젝트에 대한 참조를 추가하고 다음과 같이 호출 할 수 있습니다

Test.cpp에 :

이 잘 작동
using namespace System; 
int main(array<System::String ^> ^args) 
{ 
    double a = 7.4; 
    int b = 99; 
    Console::WriteLine("a + b = {0}", 
     MathFuncs::MyMathFuncs::Add(a, b)); 
    return 0; 
} 

, test.exe 및 mathsfuncs.dll을 빌드합니다.

그러나 VB.Net 프로젝트를 사용하여 DLL을 호출하고 싶습니다. 이를 위해 VB.Net 프로젝트를 솔루션에 추가하고 시작 프로젝트로 만들고 원래 프로젝트에 대한 참조를 추가합니다.

Could not load file or assembly 'MathFuncsAssembly, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. An attempt was made to load a program with an incorrect format.

가 어떻게 든 방법을 노출해야합니까 :이 코드를 실행하면, 그것은 나에게 오류를 제공,

MsgBox(MathFuncs.MyMathFuncs.Add(1, 2)) 

을하지만 : 그럼, 다음과 같이 사용하려고?

Visual Studio 2008 Professional을 사용하고 있습니다.

답변

0

때로는 프로젝트 플랫폼이 올바르게 설정되지 않은 경우가 있습니다. 프로젝트 설정> 컴파일> 고급 컴파일 옵션으로 이동하여 대상 CPU x86을 선택하십시오.