2015-03-18 7 views
0

Привет Я пытаюсь преобразовать .skp файлы .dae используя this code.But все время я получаю экспортер и обрабатывать как неопределенные, я не» Знаю почему. Кто-нибудь знает, как это решить?Преобразовать .skp файл .dae с помощью C++

Вот код.

#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

+0

Вы можете получить лучший ответ, если вы разместите код в своем вопросе вместо нечитаемого снимка экрана. –

+0

Я уже дал ссылку на проект. Anyways отправил здесь код. – Mj1992

+0

Мне кажется, что ваши часы вне контекста. Если Handle имеет значение null, потому что LoadLibrary не удастся, ваш код никогда не попадет в выделенную строку. Установили ли вы точку останова на этой линии? –

ответ

0

Вы получаете нулевую ручку здесь:

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

, который предполагает, что ваше приложение не может найти DLL. Я думаю, вы должны использовать обратную косую черту в Windows.

Попробуйте

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

Однако, я не понимаю, как ваш код попадает в, если заявление в нуль Ручка должна возвращать -1.

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