Getting "LINK : Fetal error LNK1561 : entry point must be defined" while creating managed C++ dll in VS2005
-
HI all, I am getting this error since morning, I am clue less as I am working first time on it (I am c# developer). the code file are as follows and i compied using Commnad prompt command cl /clr:oldSyntax DemoCPP.cpp DemoCPP.cpp class
#include "DemoHeader.h"
DemoCPP::DemoCPP()
: Length(0.00), Height(0.00)
{
}DemoCPP::DemoCPP(double L, double H)
: Length(L), Height(H)
{
}DemoCPP::~DemoCPP()
{
}double DemoCPP::getLength()
{
return Length;
}void DemoCPP::setLength(double L)
{
Length = L;
}double DemoCPP::getHeight()
{
return Height;
}void DemoCPP::setHeight(double H)
{
Height = H;
}void DemoCPP::setDimensions(double L, double H)
{
setLength(L);
setHeight(H);
}double DemoCPP::Perimeter()
{
return 2 * (Length + Height);
}double DemoCPP::Area()
{
return Length * Height;
}header file DemoHeader.h
#pragma once
#using <mscorlib.dll>__gc class DemoCPP
{
public:
DemoCPP();
DemoCPP(double L, double H);
~DemoCPP();
double getLength();
void setLength(double L);
double getHeight();
void setHeight(double H);
void setDimensions(double L, double H);
double Perimeter();
double Area();
private:
double Length;
double Height;
};any body have any idea how to resolve this problem? thanks in advance!
-
HI all, I am getting this error since morning, I am clue less as I am working first time on it (I am c# developer). the code file are as follows and i compied using Commnad prompt command cl /clr:oldSyntax DemoCPP.cpp DemoCPP.cpp class
#include "DemoHeader.h"
DemoCPP::DemoCPP()
: Length(0.00), Height(0.00)
{
}DemoCPP::DemoCPP(double L, double H)
: Length(L), Height(H)
{
}DemoCPP::~DemoCPP()
{
}double DemoCPP::getLength()
{
return Length;
}void DemoCPP::setLength(double L)
{
Length = L;
}double DemoCPP::getHeight()
{
return Height;
}void DemoCPP::setHeight(double H)
{
Height = H;
}void DemoCPP::setDimensions(double L, double H)
{
setLength(L);
setHeight(H);
}double DemoCPP::Perimeter()
{
return 2 * (Length + Height);
}double DemoCPP::Area()
{
return Length * Height;
}header file DemoHeader.h
#pragma once
#using <mscorlib.dll>__gc class DemoCPP
{
public:
DemoCPP();
DemoCPP(double L, double H);
~DemoCPP();
double getLength();
void setLength(double L);
double getHeight();
void setHeight(double H);
void setDimensions(double L, double H);
double Perimeter();
double Area();
private:
double Length;
double Height;
};any body have any idea how to resolve this problem? thanks in advance!
-
HI all, I am getting this error since morning, I am clue less as I am working first time on it (I am c# developer). the code file are as follows and i compied using Commnad prompt command cl /clr:oldSyntax DemoCPP.cpp DemoCPP.cpp class
#include "DemoHeader.h"
DemoCPP::DemoCPP()
: Length(0.00), Height(0.00)
{
}DemoCPP::DemoCPP(double L, double H)
: Length(L), Height(H)
{
}DemoCPP::~DemoCPP()
{
}double DemoCPP::getLength()
{
return Length;
}void DemoCPP::setLength(double L)
{
Length = L;
}double DemoCPP::getHeight()
{
return Height;
}void DemoCPP::setHeight(double H)
{
Height = H;
}void DemoCPP::setDimensions(double L, double H)
{
setLength(L);
setHeight(H);
}double DemoCPP::Perimeter()
{
return 2 * (Length + Height);
}double DemoCPP::Area()
{
return Length * Height;
}header file DemoHeader.h
#pragma once
#using <mscorlib.dll>__gc class DemoCPP
{
public:
DemoCPP();
DemoCPP(double L, double H);
~DemoCPP();
double getLength();
void setLength(double L);
double getHeight();
void setHeight(double H);
void setDimensions(double L, double H);
double Perimeter();
double Area();
private:
double Length;
double Height;
};any body have any idea how to resolve this problem? thanks in advance!
Since this is a DLL, you need to compile with
/DLL
compiler switch. BTW, why are you using old syntax?Navaneeth How to use google | Ask smart questions
-
Since this is a DLL, you need to compile with
/DLL
compiler switch. BTW, why are you using old syntax?Navaneeth How to use google | Ask smart questions
Thanks for quick response! Yes I have googled a lot and then placed question here... the Old command i am using because it is recommended by the VS2005 when i tried to build the project from vs2005 I tried the project type as empty project as well as class library! still I am getting the same error! I have created the project using wizard itself! any further help! thanks in advance!
-
Thanks for quick response! Yes I have googled a lot and then placed question here... the Old command i am using because it is recommended by the VS2005 when i tried to build the project from vs2005 I tried the project type as empty project as well as class library! still I am getting the same error! I have created the project using wizard itself! any further help! thanks in advance!
If you have VS, don't do command compilation. I never came across a situation where VS recommended old syntax. If you need to create a fully managed assembly, choose Class Library project type. Use new syntax and compile using
/clr:safe
. if you need to communicate with native libraries, compile with/clr
switch which will produce mixed assemblies. Since you have VS IDE, best option is to use it to compile rather than doing through command. VS does things like manifest embedding automatically.Navaneeth How to use google | Ask smart questions
-
Since this is a DLL, you need to compile with
/DLL
compiler switch. BTW, why are you using old syntax?Navaneeth How to use google | Ask smart questions
I got the Answer :) here it is 1. Project Properties -> General Tab 2. for Common Language Runtime Support select Old Syntax (/clr:oldSyntax) from drop down now you do not need to play with command line .....:) you can easily build your project from visual studio IDE itself
-
If you have VS, don't do command compilation. I never came across a situation where VS recommended old syntax. If you need to create a fully managed assembly, choose Class Library project type. Use new syntax and compile using
/clr:safe
. if you need to communicate with native libraries, compile with/clr
switch which will produce mixed assemblies. Since you have VS IDE, best option is to use it to compile rather than doing through command. VS does things like manifest embedding automatically.Navaneeth How to use google | Ask smart questions
thanks navneeth for ypur reply I tried using /clr:safe option however i got the following error
Error 1 error C4980: '__gc' : use of this keyword requires /clr:oldSyntax command line option d:\excercise\dot net\cppclasslibrary\cppclasslibrary\CPPCLassLibrary.h
8 so as suggested I used the /clr:oldSyntax and option _gc I am using as i want to consume this class libray in c#
-
thanks navneeth for ypur reply I tried using /clr:safe option however i got the following error
Error 1 error C4980: '__gc' : use of this keyword requires /clr:oldSyntax command line option d:\excercise\dot net\cppclasslibrary\cppclasslibrary\CPPCLassLibrary.h
8 so as suggested I used the /clr:oldSyntax and option _gc I am using as i want to consume this class libray in c#
Here is your class using new syntax.
#pragma once
using namespace System;
ref class DemoCPP
{
public:
DemoCPP();
DemoCPP(double L, double H);
~DemoCPP();
double getLength();
void setLength(double L);
double getHeight();
void setHeight(double H);
void setDimensions(double L, double H);
double Perimeter();
double Area();
private:
double Length;
double Height;
};Now compile using
/clr
or/clr:safe
.Navaneeth How to use google | Ask smart questions