Я пытаюсь создать минимальный проект в C ++ и GLFW, который может быть связан с файлами .jpg. Однако я продолжаю получать
«документ« test.jpg »не может быть открыт. MyApp не может открывать файлы в формате« JPEG Image ».« < /P>
Это то, что я сделал: < /p>
cmakelists.txt
cmake_minimum_required(VERSION 3.10)
project(MyApp)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_OSX_ARCHITECTURES "arm64")
enable_language(OBJCXX)
set(CMAKE_OBJCXX_STANDARD 17)
find_package(OpenGL REQUIRED)
find_package(PkgConfig REQUIRED)
pkg_check_modules(GLFW REQUIRED glfw3)
include_directories(${GLFW_INCLUDE_DIRS})
link_directories(${GLFW_LIBRARY_DIRS})
add_executable(MyApp MACOSX_BUNDLE main.mm)
target_link_libraries(MyApp
glfw
${OPENGL_LIBRARIES}
"-framework Cocoa"
"-framework AppKit"
"-framework OpenGL"
)
set_target_properties(MyApp PROPERTIES
MACOSX_BUNDLE TRUE
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_SOURCE_DIR}/Info.plist"
)
< /code>
info.plist
CFBundleDocumentTypes
CFBundleTypeName
JPEG Image
CFBundleTypeRole
Editor
LSHandlerRank
Owner
LSItemContentTypes
public.jpeg
CFBundleTypeName
AnyFile
CFBundleTypeRole
Editor
LSHandlerRank
Owner
LSItemContentTypes
public.data
< /code>
main.mm
#ifdef __APPLE__
#import
#include
// Forward declare the function so the Objective-C code can call it
extern "C" void handleOpenFile(const char* path);
@interface MyAppDelegate : NSObject
@property (strong) NSWindow* dummyWindow;
@end
@implementation MyAppDelegate
- (BOOL)application:(NSApplication *)sender openFile:(NSString *)filename {
NSLog(@"[macOS] application:openFile: %@", filename);
if (!self.dummyWindow) {
self.dummyWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 1, 1)
styleMask:NSWindowStyleMaskBorderless
backing:NSBackingStoreBuffered
defer:NO];
[self.dummyWindow orderFrontRegardless];
}
// Now you can call handleOpenFile safely
handleOpenFile(filename.UTF8String);
return YES;
}
@end
__attribute__((constructor))
static void setupAppDelegate() {
static bool initialized = false;
if (initialized) return;
initialized = true;
[NSApplication sharedApplication];
static MyAppDelegate* delegate = [[MyAppDelegate alloc] init];
[NSApp setDelegate:delegate];
}
#endif // __APPLE__
#include
#include
#include
#include
#include
#include
#include
static std::mutex logMutex;
void logMessage(const std::string& msg) {
std::lock_guard lock(logMutex);
const std::string logPath = "/tmp/open_files.log";
std::ofstream logFile(logPath, std::ios::app);
if (!logFile.is_open()) {
std::cerr
Подробнее здесь: https://stackoverflow.com/questions/797 ... app-in-mac
Как я могу связать файл с приложением GLFW в Mac? ⇐ C++
Программы на C++. Форум разработчиков
-
Anonymous
1753191014
Anonymous
Я пытаюсь создать минимальный проект в C ++ и GLFW, который может быть связан с файлами .jpg. Однако я продолжаю получать
«документ« test.jpg »не может быть открыт. MyApp не может открывать файлы в формате« JPEG Image ».« < /P>
Это то, что я сделал: < /p>
cmakelists.txt
cmake_minimum_required(VERSION 3.10)
project(MyApp)
set(CMAKE_CXX_STANDARD 17)
set(CMAKE_OSX_ARCHITECTURES "arm64")
enable_language(OBJCXX)
set(CMAKE_OBJCXX_STANDARD 17)
find_package(OpenGL REQUIRED)
find_package(PkgConfig REQUIRED)
pkg_check_modules(GLFW REQUIRED glfw3)
include_directories(${GLFW_INCLUDE_DIRS})
link_directories(${GLFW_LIBRARY_DIRS})
add_executable(MyApp MACOSX_BUNDLE main.mm)
target_link_libraries(MyApp
glfw
${OPENGL_LIBRARIES}
"-framework Cocoa"
"-framework AppKit"
"-framework OpenGL"
)
set_target_properties(MyApp PROPERTIES
MACOSX_BUNDLE TRUE
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_SOURCE_DIR}/Info.plist"
)
< /code>
info.plist
CFBundleDocumentTypes
CFBundleTypeName
JPEG Image
CFBundleTypeRole
Editor
LSHandlerRank
Owner
LSItemContentTypes
public.jpeg
CFBundleTypeName
AnyFile
CFBundleTypeRole
Editor
LSHandlerRank
Owner
LSItemContentTypes
public.data
< /code>
main.mm
#ifdef __APPLE__
#import
#include
// Forward declare the function so the Objective-C code can call it
extern "C" void handleOpenFile(const char* path);
@interface MyAppDelegate : NSObject
@property (strong) NSWindow* dummyWindow;
@end
@implementation MyAppDelegate
- (BOOL)application:(NSApplication *)sender openFile:(NSString *)filename {
NSLog(@"[macOS] application:openFile: %@", filename);
if (!self.dummyWindow) {
self.dummyWindow = [[NSWindow alloc] initWithContentRect:NSMakeRect(0, 0, 1, 1)
styleMask:NSWindowStyleMaskBorderless
backing:NSBackingStoreBuffered
defer:NO];
[self.dummyWindow orderFrontRegardless];
}
// Now you can call handleOpenFile safely
handleOpenFile(filename.UTF8String);
return YES;
}
@end
__attribute__((constructor))
static void setupAppDelegate() {
static bool initialized = false;
if (initialized) return;
initialized = true;
[NSApplication sharedApplication];
static MyAppDelegate* delegate = [[MyAppDelegate alloc] init];
[NSApp setDelegate:delegate];
}
#endif // __APPLE__
#include
#include
#include
#include
#include
#include
#include
static std::mutex logMutex;
void logMessage(const std::string& msg) {
std::lock_guard lock(logMutex);
const std::string logPath = "/tmp/open_files.log";
std::ofstream logFile(logPath, std::ios::app);
if (!logFile.is_open()) {
std::cerr
Подробнее здесь: [url]https://stackoverflow.com/questions/79710551/how-can-i-associate-a-file-with-a-glfw-app-in-mac[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия