使用C++将.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>

您好,我正在尝试使用代码将.skp文件转换为.dae。但一直以来,我都将导出器和句柄设置为未定义,我不知道为什么。有人知道如何解决这个问题吗

这是密码

#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");