首先放代码:
#pragma once
// FeatureReuseDoc.h : CFeatureReuseDoc 类的接口
//
#include "TriMesh\include\TriMesh.h"
#include "InteractiveModel.h"
#include "FeatureClone\FeatureClone.h"
#include "FeatureClone\PartClass\PartLibrary.h"
#include "FeatureClone\FeatureArray\FeatureArray.h"
using namespace feature;
#include "Texture\ParameterDecal.h"
#include "Texture\DualParameterDecal .h"
#include "Texture\DGPCParameterDecal.h"
#include "Geodesic\GenerateGeodesic.h"
#include "MeshProcessing/LsDeformerProcessing.h"
#include "MeshProcessing/HoleFill.h"
#include "MeshProcessing/DeleteSelectFaces.h"
#include "MeshProcessing/MeshSmooth.h"
#include "MeshProcessing/ScaleDeformBrush.h"
#include "MeshProcessing/MeshOptimize.h"
using namespace meshprocess;
#include "SelectionTool\BrushSelection.h"
#include "SelectionTool\PenSelection.h"
#include "SelectionTool\CircusSelection.h"
#include "CrePorousStuMdl\CrePorousStuMdl.h" //*
#include"CrePorousStuMdl\Cre2DVoroP.h"
using namespace Sele;
#include "ViewSpace\BackGround.h"
#include "ViewSpace\ShowShader.h"
using namespace ViewSpace;
class CFeatureReuseDoc : public CDocument
{
protected: // 仅从序列化创建
CFeatureReuseDoc();
DECLARE_DYNCREATE(CFeatureReuseDoc)
// 属性
public:
Interactive_Model m_InteractiveModel;
void BeginInteractiveModel(Interactive_Model modelswitch,TriMesh*Tmesh=NULL);
void DeleteAllInteractive();
void RenderInteractiveModel();
public://视图功能区
BackGroundColor m_BackGroundColor;//背景
ShaderModel m_ShaderModel;
public://选择功能区
CBrushSelection*m_BrushSelection;
CPenSelection *m_PenSelection;
CCircusSelection*m_CircusSelection;
public://特征功能区
CFeatureClone *m_FeatureClone;
CFeatureArray*m_Feature_Axis_Array;
CPartLibrary m_PartLibary;
public://网格处理功能区
CLsDeformerProcessing*m_LaplaceDeformer;//微分变形
CHoleFill*m_HoleFillAll;//全部补洞
CDeleteSelectFaces*m_DeleteSelectFaces;//删除功能
CMeshSmooth*m_MeshSmooth;//网格光顺
CScaleDeformBrush*m_ScaleDeformBrush;//局部膨胀调整
CMeshOptimize*m_MeshOptimize;//网格优化
CHoleFill*m_HoleFillSingle;//单孔补洞
public://工具功能区
ToolSpace::CParameterDecal *m_Para_Decal; //参数化贴图
ToolSpace::CDualParameterDecal *m_DualMeshParameterization;
ToolSpace::CDGPCParameterDecal*m_DGPCMeshParameterization;
ToolSpace::CGenerateGeodesic *m_Exact_Geodesics_Path;
public: //CrePorousStuMdl功能区
//CrePorousStuMdl* m_CrePorousStuMdl;
CSY* m_vor;
public:
IFun::ImplicitFun* m_ImFun;
COLORREF me_color;
bool CoordSystem;
private:
public:
vector<TriMesh*> meshes;
int Current_mesh; //当前的网格模型
// 重写
public:
virtual BOOL OnNewDocument();
virtual void Serialize(CArchive& ar);
virtual BOOL OnOpenDocument(LPCTSTR lpszPathName);
bool IsTextFile(const char * strFileName); //判断一个文件是否为文本文件
TriMesh::BBox getbox();
// 实现
public:
virtual ~CFeatureReuseDoc();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endif
// 生成的消息映射函数
protected:
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnFileSaveAs();
afx_msg void OnUnDo();
afx_msg void OnReDo();
virtual BOOL OnSaveDocument(LPCTSTR lpszPathName);
vector<TriMesh>m_Record_Mesh;
//调试
vector<vector<int>>m_AllLoops;
int m_postprocess;
};
VS2019 报了LNK2019错误:
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK2019 无法解析的外部符号 "void __cdecl computeUnion(struct CorkTriMesh,struct CorkTriMesh,struct CorkTriMesh *)" (?computeUnion@@YAXUCorkTriMesh@@0PAU1@@Z),函数 "public: void __thiscall CBoolen::computeBoolUnion(class TriMesh *,class TriMesh *,class TriMesh * &)" (?computeBoolUnion@CBoolen@@QAEXPAVTriMesh@@0AAPAV2@@Z) 中引用了该符号 FeatureReuse G:\WanGJianGFei\paper-testing\07 coding\FeatureReuse0.0\FeatureReuse\boolen.obj 1
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK2019 无法解析的外部符号 "void __cdecl computeIntersection(struct CorkTriMesh,struct CorkTriMesh,struct CorkTriMesh *)" (?computeIntersection@@YAXUCorkTriMesh@@0PAU1@@Z),函数 "public: void __thiscall CBoolen::computeBoolIntersection(class TriMesh *,class TriMesh *,class TriMesh *)" (?computeBoolIntersection@CBoolen@@QAEXPAVTriMesh@@00@Z) 中引用了该符号 FeatureReuse G:\WanGJianGFei\paper-testing\07 coding\FeatureReuse0.0\FeatureReuse\boolen.obj 1
严重性 代码 说明 项目 文件 行 禁止显示状态
错误 LNK2019 无法解析的外部符号 "public: void __thiscall IFun::ImplicitFun::Vec_P_To_Bc(class Vec<3,float>,struct TriMesh::Face,class Vec<3,float> &)" (?Vec_P_To_Bc@ImplicitFun@IFun@@QAEXV?$Vec@$02M@@UFace@TriMesh@@AAV3@@Z),函数 "public: void __thiscall IFun::ImplicitFun::ComputeVDF(class Vec<3,float>,float &)" (?ComputeVDF@ImplicitFun@IFun@@QAEXV?$Vec@$02M@@AAM@Z) 中引用了该符号 FeatureReuse G:\WanGJianGFei\paper-testing\07 coding\FeatureReuse0.0\FeatureReuse\Cre2DVoroP.obj 1
尝试过:
如果是Debug的“在静态库中使用MFC”,不要使用MDd,改用MTd,然后编译即可通过。
如果是Debug的“在共享DLL中使用MFC”,注意不要使用MTd,改用MDd;
如果是Release版本“在静态库中使用MFC”,不要使用MD,使用MT;
如果是Release版本的“在共享DLL中使用MFC”,不要使用MT,使用MD。
原文链接:https://blog.csdn.net/qq_31565379/article/details/126383490
所以各位有什么办法吗?