使用Unity时打开C# 弹出opening visual studio一直停在这个界面是啥情况?有啥办法解决?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Unity时打开C# 弹出opening visual studio一直停在这个界面是啥情况?有啥办法解决?相关的知识,希望对你有一定的参考价值。

我也遇到相同问题 原因是之前安装了Unity别的版本MonoDevelop 和VS造成冲突导致的 我卸载了Unity5.5和我当前的Unity5.6 重新安装当前需要的Unity5.6 在Unity5.6中设置编辑器索引 解决此问题

后来发现是我操作脚本 创建之后直接打开 没有等Unity右下角加载转完 devenv.exe报错造成的问题 用任务管理器结束了所有devenv.exe进程 重新打开Unity创建脚本  打开之后有解决方案就OK了

参考技术A 估计你的工程比较大,里面有一些文件错了,导致这里卡住
建议先关闭unity,然后把Library文件夹,obj文件夹全部删除掉,然后重新打开本回答被提问者和网友采纳
参考技术B 如果曾经打开过,可以按取消,这样就能打开VS了 在VS里关闭解决方案就会弹出让你打开解决方案了 参考技术C 按回车键会出来那个界面的追问

这个进度条一直在这一晚上没前进过

追答

回车键不要管它

参考技术D 我也是这个问题 ,求助0.0

cv::VideoCapture 在 C# 项目中从 DLL 使用时不会打开文件或流

【中文标题】cv::VideoCapture 在 C# 项目中从 DLL 使用时不会打开文件或流【英文标题】:cv::VideoCapture doesn't open a file or stream when using it from DLL in C# project 【发布时间】:2019-01-24 02:09:30 【问题描述】:

我通过 DllImports 在 C++ 中使用 Unity 的 C# 脚本和 OpenCV。我的目标是在 Unity 场景中创建来自 OpenCV 的视频流。 Unity 加载包含 OpenCV 函数的库。 问题是cv::VideoCapture().open("path_to_file_or_stream") 在从 dll(来自 Unity)调用时总是返回 false。

当我将我的 C++ 代码构建为可执行文件时,一切都很完美。我正在使用 CMAKE 构建我的项目。

# Build exe
ADD_EXECUTABLE($PROJECT_NAME $SRCS_DIR $INCL_DIR)

# Build lib
ADD_LIBRARY($PROJECT_NAME SHARED $SRCS_DIR $INCL_DIR)

# OpenCV
FIND_PACKAGE(OpenCV)
IF(OpenCV_FOUND)
  TARGET_LINK_LIBRARIES($PROJECT_NAME PUBLIC $OpenCV_LIBS)
    MESSAGE(STATUS "[OpenCV_LIBS] " $OpenCV_LIBS)
ENDIF()

但是,当从 dll 运行时,cv::VideoCapture() 没有打开。

这是我目前掌握的一些代码:

C++/ImageProviderAPI.h

#define IMAGE_API __declspec(dllexport)
extern "C"

    ...
    IMAGE_API ImageProviderAPI* InitProvider(const char* url);
    IMAGE_API void StartProvider(ImageProviderAPI* api);
    ...


class ImageProviderAPI 

public:

    ImageProviderAPI(std::string url);
    ~ImageProviderAPI();

    void start();

private:

    std::string m_url;
    cv::VideoCapture* p_videoCapture;
;

C++/ImageProviderAPI.h

IMAGE_API ImageProviderAPI* InitProvider(const char* url) 
    return new ImageProviderAPI(std::string(url));


IMAGE_API void StartProvider(ImageProviderAPI* api) 
    api->start();


ImageProviderAPI::ImageProviderAPI(std::string url) : 
m_url(url), p_videoCapture(nullptr) 



void ImageProviderAPI::start() 
    p_videoCapture = new cv::VideoCapture();
    bool res = p_videoCapture->open(m_url);     // m_url - path to file or stream url
                                                // Always false if called from dll 
    // or this way

    p_videoCapture = new cv::VideoCapture(m_url);
    bool res = p_videoCapture->isOpened();      // Always false if called from dll

C#/MyScript.cs

public class MyScript: MonoBehaviour 
    ...
    [DllImport("ImageProviderAPI.dll", CharSet = CharSet.Unicode)]
    private static extern IntPtr InitProvider(string url);

    [DllImport("ImageProviderAPI.dll", CharSet = CharSet.Unicode)]
    private static extern void StartProvider(IntPtr api);

    private IntPtr API;

    void Start() 
        API = InitProvider("path_to_file_or_stream_url");
        StartProvider(API);
    

    void Update() 
        // Do stuff
    

例如,其他一些 OpenCV 函数,如 cv::imreadcv::resizecv::cvtColor 在从 dll 调用时可以工作。我用std::ofstream记录了VideoCapture打开结果。

我没想到以 exe 或 dll 运行时有任何区别。也许我在 dll 导入/导出过程中遗漏了一些东西。

【问题讨论】:

我的错误是我忘记检查传递给cv::VideoCapture 的文件路径或流url 字符串。删除CharSet = CharSet.Unicode 即可解决问题。 【参考方案1】:

问题是DllImportAttribute,尤其是CharSet = CharSet.Unicode

要解决它,只需删除 CharSet = CharSet.Unicode

[DllImport("ImageProviderAPI.dll")]

【讨论】:

以上是关于使用Unity时打开C# 弹出opening visual studio一直停在这个界面是啥情况?有啥办法解决?的主要内容,如果未能解决你的问题,请参考以下文章

使用js或者C#怎么实现下载弹出页面中的下载框的方式下载文件?

Unity3DUnity 脚本 ① ( 创建 C# 脚本 | Visual Studio 2019 中打开 C# 脚本 | 编译 C# 脚本 | 挂载 C# 脚本到游戏物体 | 运行脚本 )

cv::VideoCapture 在 C# 项目中从 DLL 使用时不会打开文件或流

关闭表单提交时打开的弹出窗口并触发单击父窗口

(C#)如何用winform实现,打开ie时,自动弹出指定网址的页面??

open打开新窗口时的选项