疯了!疯了!!再不解决就要疯掉了!高分求解
本人用Vc++.net混合编写托管代码和非托管代码时,遇到了一个奇怪的问题,请大虾们指点迷津!
现用VC++.net生成一托管类库文件DLL.cpp(当然包括DLL.h),然后生成一新类shp(新类文件为shp.cpp和shp.h),新生成的类为非托管代码,其原代码如下:
DLL.h文件:
// DLL.h
#pragma once
#pragma managed
#using <mscorlib.dll>
using namespace System;
namespace DLL
{
public __gc class Class1
{
// TODO: 在此添加此类的方法。
};
}
DLL.cpp文件:
// 这是主 DLL 文件。
#include "stdafx.h"
#include "DLL.h"
#pragma managed
#using <mscorlib.dll>
shp.h文件:
#pragma once
#pragma unmanaged
#include <stdio.h>
#include <malloc.h>
class Fileheader
{
int Code;
int Length;
int Version;
int Type;
double Xmin;
double Ymin;
double Xmax;
double Ymax;
double Zmin;
double Zmax;
double Mmin;
double Mmax;
} ;
class Shpfile
{
Fileheader *Header;
public:
Shpfile(void);
~Shpfile(void);
};
shp.cpp文件
#pragma unmanaged
#include "StdAfx.h"
#include ".\shpfile.h"
#include <stdio.h>
#include <malloc.h>
Shpfile::Shpfile(void)
{
Header=new Fileheader;
}
Shpfile::~Shpfile(void)
{
}
类库中就这么多代码,我想将Class1生成为托管类,而shp类为非托管类,单个文件编译都能通过,但是在“生成”或“重新生成”时,却链接通不过,提示的错误如下:
DLL error LNK2001: 无法解析的外部符号 __check_commonlanguageruntime_version
DLL error LNK2001: 无法解析的外部符号 __check_commonlanguageruntime_version
DLL error LNK2001: 无法解析的外部符号 __CorDllMain@12
DLL error LNK2019: 无法解析的外部符号 "void * __cdecl operator new(unsigned int)"
(??2@YAPAXI@Z) ,该符号在函数 "public: __thiscall Shpfile::Shpfile(void)"
(??0Shpfile@@QAE@XZ) 中被引用
DLL fatal error LNK1120: 3 个无法解析的外部命令
如果把shp类构造函数中的new 那行代码删掉的话,就一点错误都没有了,这个问题已经搞得我头昏脑胀几天了,晕死了,请各位大虾指点指点吧,或者提供相关方面的文档也可以,不胜感激!!!