使用C++将.SKP文件转换为.DAE
您好,我正在尝试使用代码将.skp文件转换为.dae。但一直以来,我都将导出器和句柄设置为未定义,我不知道为什么。有人知道如何解决这个问题吗 这是密码使用C++将.SKP文件转换为.DAE,c++,file-format,sketchup,C++,File Format,Sketchup,您好,我正在尝试使用代码将.skp文件转换为.dae。但一直以来,我都将导出器和句柄设置为未定义,我不知道为什么。有人知道如何解决这个问题吗 这是密码 #include "stdafx.h" #include <windows.h> #include <WinBase.h> #include <stdio.h> #include <tchar.h> #include <iostream> #include <string>
#include "stdafx.h"
#include <windows.h>
#include <WinBase.h>
#include <stdio.h>
#include <tchar.h>
#include <iostream>
#include <string>
#include "slapi\import_export\modelexporterplugin.h"
typedef SketchUpModelExporterInterface* (*GetExporterPtr)(void);
int _tmain(int argc, char* argv[])
{
if (argc == 0)
return 0;
HINSTANCE Handle = LoadLibrary("Exporters/skp2dae.dll");
if (!Handle)
return -1;
GetExporterPtr ExporterPtr = (GetExporterPtr)GetProcAddress(Handle,"GetSketchUpModelExporterInterface");
SketchUpModelExporterInterface* Exporter = ExporterPtr();
if (Exporter->GetFileExtensionCount() > 0)
{
for (int i = 1; i < argc; i++)
{
const std::string input_skp(argv[i]);
const std::string output = input_skp + "." + Exporter->GetFileExtension(0);
Exporter->ConvertFromSkp(input_skp, output, NULL, NULL);
}
}
FreeLibrary(Handle);
return 0;
}
您将在此处获得一个空句柄:
HINSTANCE Handle = LoadLibrary("Exporters/skp2dae.dll");
这表明应用程序找不到DLL。我认为你必须在Windows上使用反斜杠
试一试
但是,我不明白代码是如何到达if语句的,因为空句柄应该返回-1
请参阅。如果您在问题中发布一些代码,而不是无法阅读的屏幕截图,您可能会得到更好的答案。我已经给出了该项目的链接。不管怎么说,这里也贴了代码。在我看来,你的手表好像断章取义了。如果由于LoadLibrary失败而导致句柄为null,则代码将永远不会到达突出显示的行。你在那一行上设置了断点吗?是的,我设置了断点,它位于if条件内,但从未运行for循环,我使用watch尝试找出Exporter->GetFileExtension0、input_skp和output的值,但无法找到。我试图刷新手表的值,但仍然没有成功。
HINSTANCE Handle = LoadLibrary("Exporters\\skp2dae.dll");