您好我正在尝试使用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;
}
答案 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。