使用C ++将.skp文件转换为.dae

时间:2015-03-18 16:47:29

标签: c++ file-format sketchup

您好我正在尝试使用this代码将 .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;
}

enter image description here

1 个答案:

答案 0 :(得分:0)

你在这里得到一个空句柄:

HINSTANCE Handle = LoadLibrary("Exporters/skp2dae.dll");

表明您的应用程序无法找到DLL。我认为你必须在Windows上使用反斜杠。

尝试

HINSTANCE Handle = LoadLibrary("Exporters\\skp2dae.dll");

但是,我不明白你的代码如何获得if语句,因为null句柄应该返回-1。

请参阅https://msdn.microsoft.com/en-us/library/windows/desktop/ms684175(v=vs.85).aspx