将资源嵌入到c#的本地exe中
我想使用C#嵌入EXE文件中的资源. 如果我使用C ++代码,它运行良好: UpdateResource(hResource,RT_RCDATA,MAKEINTRESOURCE(104), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT),(LPVOID)text,FileSize); C#我使用的代码: IntPtr handle = BeginUpdateResource(this.NomeFileCryptato, false); IntPtr fileptr = ToPtr(encrypted); bool res = UpdateResource(handle, "RT_RCDATA", "104", 1040, fileptr, Convert.ToUInt32(encrypted.Length)); EndUpdateResource(handle, false); 实际,C#代码将资源嵌入EXE文
16 2024-04-26
编程技术问答社区
C#-指数超出了范围
我正在尝试将C ++类转换为C#,并在此过程中学习C ++的内容.我以前从未遇到过向量,我的理解是这就像c#中的列表函数.在类别的转换期间,我使用列表Futures_price =新列表(convert.toint32(no_steps) + 1)重新编写了代码.一旦我运行代码,我就会出现"索引超出范围"错误. 浏览了SOF,我相信问题是关于与此相关的索引范围之外的参数,但是我看不到使用以下代码解决此问题的简单解决方案. 特别是,这是触发错误的行:futures_prices [0] = spot_price * nath.pow(d,no_steps); 以下是完整的代码: public double futures_option_price_call_american_binomial(double spot_price, double option_strike, double r, double sigma, double time, double no_
14 2024-04-26
编程技术问答社区
微软HTML帮助-从主题ID获取主题页面URL
目前,我们正在使用HTML帮助在我们的软件中显示CHM帮助文件.但是,我们想更改我们打开帮助的方式,以使用嵌入式浏览器在我们自己的自定义窗口中打开它. 通过直接请求使用URL打开的主题页面来实现这一目标很简单,但是,我们想维护主题ID的用法,以便编辑团队可以自由地重新结构并重新指定他们的帮助.仅通过操纵地图和别名,请参阅拟合. 我一直在挖掘一下,找不到任何(相当便宜的)方法来使URL从主题ID打开,因此我可以要求在自定义窗口中打开URL.我是否错过了一个技巧,还是有任何图书馆可以促进这一点? 解决方案 afaik您需要使用该主题文件名的有效URL,例如使用网络浏览器控件时,"花园/园林".因此,其他解决方案非常困难,我认为通过网络浏览器控件不可能. 您知道您可以与以下代码: public static string GetChmUrl(string fileName, string page) { StringBuilder url = new
20 2024-04-26
编程技术问答社区
C++/CLI:返回对非管理对象的引用
我正在寻找一种返回对托管对象成员的对象的引用的方法.这可以在C ++中很容易实现,但是对于C#使用C ++/CLI包装器是一个挑战.以下是可重复的方案(这是很多代码,但这都很容易,只需证明问题) C ++类: class NATIVEAPI NativeSlave { public: NativeSlave() : x_( 0 ), y_( 0.0 ) {} NativeSlave( int x, double y ) : x_( x ), y_( y ) {} int x_; double y_; }; class NATIVEAPI NativeMaster { public: __declspec( property( get = getSlave, put = setSlave ) ) NativeSlave& slave; NativeSlave& getSlave() {
22 2024-04-26
编程技术问答社区
在Windows 8 Metro |应用程序中打开外部SQLite |数据库?
我使用"用于Windows Runtime的SQLITE"和SQLITE-NET(如var dbPath = Path.Combine(Windows.Storage.ApplicationData.Current.LocalFolder.Path, "db.sqlite"); using (var db = new SQLite.SQLiteConnection(dbPath)) { ... } 但是当我想使用这样的外部路径时: var dbPath = "C:\\Users\\xxxxxx\\db.sqlite"; 然后在"无法打开数据库文件"的情况下发生错误.为什么?在这里,我正在使用C#,通常我使用C ++,但是对于这个问题,我敢肯定这没关系;) 解决方案 您无法在文件系统上选择任意文件.请参阅在这里有关详细信息 默认情况下您可以访问以下位置: 应用程序安装目录 应用程序数据位置 用户的下载文件夹 和 此外,您的应用程序可以访问连接
8 2024-04-26
编程技术问答社区
如何在C#应用程序中使用以char**为参数的extern "C" dll函数?
我的dll具有函数: extern "C" int doJob(char** buffer); 它使用C ++的用法如下: char* buf; int status = doJob(&buf); 在C#中我应该有什么定义? 如何在C#? 中使用此功能 解决方案 可能的模式之一是: [DllImport("containsdojob.dll", CallingConvention = CallingConvention.Cdecl)] public static extern Int32 doJob(out IntPtr buffer); [DllImport("containsdojob.dll", CallingConvention = CallingConvention.Cdecl)] public static extern void freeMemory(IntPtr buffer); 和 IntPtr buffer = IntPtr
10 2024-04-26
编程技术问答社区
如何将管理的Bitmap从C#传递到包装好的非管理的OpenCV的Mat上?
我有一个带有3个部分的项目: 带有回调的托管C#项目,这给了我一个位图(它应该具有PixelFormat = format24bpprgb).我已经尝试了几种方法将位图转换为我可以传递给第2部分的东西,这是我尝试的最后一件事: public int BufferCB(IntPtr pBuffer, int BufferLen) { byte[] aux = new byte[BufferLen]; Marshal.Copy(pBuffer, aux, 0, BufferLen); String s_aux = System.Text.Encoding.Default.GetString(aux); wrappedClassInstance.GetBitmap(s_aux); } 托管的C ++/CLI要包装项目3: int WrappedClass::GetBitmap(array^ s_in) {
14 2024-04-26
编程技术问答社区
从C#调用C++函数时隐藏调试信息(VS2013)
我有一个VS2013解决方案,该解决方案由2个项目组成: A C#项目 和一个C ++(CLR/DLL)项目 我目前正在尝试解决这些问题,但是我还没有解决这些问题. 如果我在C ++代码中放置一个断点并运行C#项目,则当C ++代码从C#. 调用时,调试器不会断开/停止/停止 我无法在C ++条目函数中调试本地变量的局部变量: 当我在VS2013中构建解决方案时,我会得到此警告: c:\ program文件 (x86)\ msbuild \ 12.0 \ bin \ microsoft.common.currentversion.targets(1697,5): 警告MSB3270:处理器之间存在不匹配 正在构建" MSIL"和处理器的项目的架构 参考架构 " c:\ projects \ myproject \ debug \ dspclasslibrary.dll"," x86". 此不匹配可能会导致运行时故障.请考虑通过配置管理器
10 2024-04-26
编程技术问答社区
如何在C#程序中使用用Visual C++编写的DLL?
可能的重复: c#p \ invoke dll dll dll no ofer dll no no to c ++? 在对So和Google进行了相当彻底的冲浪后,我问这个问题,大多数答案使我大约有80%的方式,但仍然有些混乱,因此请告诉我出路. 我有一些视觉C ++函数定义如下: mydll.h #ifdef FUNCTIONS_EXPORTS #define FUNCTIONS_API __declspec(dllexport) #else #define FUNCTIONS_API __declspec(dllimport) #endif namespace Functions { class MyFunctions { public: static FUNCTIONS_API int Add(int a, int b); static FUNCTIONS_API int Factorial(int a);
12 2024-04-26
编程技术问答社区
从c++到c#的RegisterWindowMessage和SendMessage需要帮助
我在C#中有此代码: [DllImport("user32.dll", CharSet = CharSet.Unicode)] static extern uint RegisterWindowMessage(string lpProcName); [DllImport("user32.dll")] private static extern IntPtr SendMessage( IntPtr hWnd, int Msg, IntPtr wParam, IntPtr lParam); 我需要将其从C ++转换为C#: UINT UWM_UART_CTRL_TRS = ::RegisterWindowMessage(_T("BT_UARTCTRL_TRANSFER")); ::SendMessage(HWND_BROADCAST, UWM_UART_CTRL_TRS, 0, 0); 和此: UINT UWM_UART_CTRL_TRS = ::Regis
12 2024-04-26
编程技术问答社区
制作交错的视频帧
我正在开发一个简单的电视角色生成器软件.我需要捕获一个窗口,并实时在视频卡缓冲区上写上像素. (窗口有一些动画,视频和文字.) 现在,它适用于渐进格式,但我的问题是交错的输出.(PAL 720x576i格式) 我认为我应该做以下步骤使每个交叉框架: 1-作为图像 捕获time1中的窗口 2-提取field1(甚至字段) 3-捕获时间2作为图像 捕获窗口 4-提取field2(奇数) 5-集成field1和field2以获取frame1 (如果我错了,请纠正我.) 所以,我需要从图像中制作字段以获取交织帧. 注意:我知道有些工具可以做到,但是我想自己实施. 在 解决方案 我找到了有关Interleave视频和视频字段的最佳文章. 所有关于视频字段. 感谢Chris Pirazzi.
12 2024-04-26
编程技术问答社区
C#中的无符号字符指针?
在将一些代码从C ++转换为C#的中间,我发现了这个, unsigned char *p = m_pRecvBuffer + 5; unsigned int noncelen1 = *p * 256 + p[1]; 如何将其转换为C#? m_pRecvBuffer是一个char-array,但是我将其存储为字节阵列. 解决方案 类似于 的东西 byte[] p = new byte[m_pRecvBuffer.Length - 5]; Array.Copy(m_precvBuffer, p, m_pRecvBuffer.Length - 5); uint noncelen1 = p[0] * 256 + p[1]; 但是,在这种情况下,我认为您实际上不需要使用数组副本.只是使用 uint noncelen1 = p[5] * 256 + p[6]; 我猜应该就足够了. 其他解决方案 嗯,我想知道是否有一些重构是为了获得此代码.是的,您可以使用
10 2024-04-26
编程技术问答社区
抛出异常后,Boost共享的mutex没有被释放
我遇到了一个奇怪的提升(v1.38)Mutex僵局,在一个先前的.NET(C#,3.5)应用程序中,该应用程序调用了C ++库.一个例外是在获得读取锁后[正确]在某个点上抛出,并且该例外始终返回到托管.NET代码(处理的地方).试图使用二阶方法的C ++库的下一个呼叫无限地挂在唯一的锁育式上(大概没有发布读取锁): ): ntdll.dll!NtWaitForSingleObject() + 0x15 bytes kernel32.dll!WaitForSingleObjectEx() + 0x43 bytes kernel32.dll!WaitForSingleObject() + 0x12 bytes OurCPPLib.dll!boost::shared_mutex::unlock_upgrade_and_lock() Line 478 + 0x11 bytes C++ OurCPPLib.dll!boost::unique_lock
14 2024-04-26
编程技术问答社区
添加到C++应用程序的C#图形用户界面
我想添加我的C ++应用程序A C#.NET GUI. 我的C ++应用程序非常简单,但是我有一些指针和参考. 最好的方法C#将识别此指针和参考? 解决方案 有几种方法,这里有一些,这取决于您的口味和您的项目. a)使用com Interop,如果您的C ++项目是用com编写的. b)使用com Interop,您可以将com包装器写入您的C ++应用程序,然后从C#. 使用它 c)使用C ++/CLI,也就是说,将您的项目转换为托管的C ++应用程序,并在使用C ++代码的C ++中创建托管类. 您还可以编写加载C ++ DLL或静态库的托管C ++ DLL. d)使用P调用C调用,从与C ++类一起使用的C ++代码中导出DLL C函数,使用[Dllimport]属性从C#调用C函数. 您可以使用类型INTPTR,并且可以使用更好,更安全的安全性来表达指示和参考. 所有的方式都有美好的事物和缺点,但是每个列出的tehcnique都需要一个"
2 2024-04-26
编程技术问答社区
从MF SinkWriter mp4文件的播放时间是添加音频样本时的一半,图像的播放速度也是两倍。
我为我的C#项目创建了一个托管的C ++库,以将图像和音频编码为MSDN教程上的MP4容器库 sinkwriter .为了测试结果是否正常,我创建了一种提供600帧的方法.此帧代表10秒的视频,每秒60帧. 我提供的每秒更改的图像,我的音频文件包含一个计数为10的声音. 我面临的问题是,输出视频实际上只有5秒钟.视频的元数据表明它是10秒,但不是.声音也几乎不计5. 如果我只编写没有音频部分的图像样本,则视频的持续时间为预期的10秒. 我在这里缺少什么? 这是我应用程序的某些部分. 这是我用来创建600帧的C#部分,然后在C#部分中调用Puspframe方法. var videoFrameCount = 10 * FPS; SetBinaryImage(); for (int i = 0; i 0 &&
8 2024-04-26
编程技术问答社区
如何从C#调用一个以std::vector<>::iterator为参数的非托管C++函数?
在不受管理的C ++中,我有一个我试图从C#调用的函数.此C ++函数如下: typedef std::vector Points; typedef std::back_insert_iterator OutputIterator; namespace MYNAMESPACE{ DLLEXPORT OutputIterator convexHull(Points::iterator first, Points::iterator last, OutputIterator result); } 从C ++调用时,该函数的使用如下: Points points, result; points.push_back(Point(0,0)); points.push_back(Point(10,0)); points.push_back(Point(10,10)); points.push_back(Point(6,5
12 2024-04-26
编程技术问答社区
试图加载一个格式不正确的程序
我正在使用C#加载C ++ DLL,并收到此错误: "类型'system. "其他信息:试图加载具有错误格式的程序.(Hresult的例外:0x8057000b) 我不知道为什么.使用VS2012向导,Win32应用程序,DLL的DLL生成C ++ DLL.它是使用X64选项构建的.这是代码: // MyNativeDLL.cpp : Defines the exported functions for the DLL application. // #include "stdafx.h" //char* pMemoryBuffer = NULL; using namespace std; __declspec(dllexport) long Test() { long a; a = 1; a++; return a; } C#代码称为: [Dl
14 2024-04-26
编程技术问答社区
使用EmguCV进行骨架化
我正在尝试使用EMGUCV在C#中进行骨骼化.我正在此页面底部的示例中,该样本在C ++中,我尝试了一下,并且可以使用: 骨架/ 我将鳕鱼转换为c#如下: Image eroded = new Image(img2.Size); Image temp = new Image(img2.Size); Image skel = new Image(img2.Size); skel.SetValue(0); CvInvoke.cvThreshold(img2, img2, 127, 256, 0); StructuringElementEx element = new StructuringElementEx(3, 3, 1, 1, Emgu.C
10 2024-04-26
编程技术问答社区
检索外部C++库中的EntryPoints列表?
我已经找到了该软件 我想知道如何开始尝试模仿vb.net或c#代码中功能名称的相同功能(我不需要检索adreesses),对于C ++库. 我要测试的C ++ DLL是有人可以指导我吗? 解决方案 现代窗口中的.exe和.dll的文件格式是可执行可执行的(最常见的PE或PE32,格式有一个64BITS版本,可以更改某些数据的大小并扩展其他数据). 有关格式的信息: Microsoft PE和Coff Specification 介绍Win32便携式可执行文件格式,第1部分 介绍Win32便携式可执行文件格式,第2部分 在PE中凝视:Win32便携式可执行文件格式的参观(((搜索PE文件导出) Corkami网站(提供了有关二进制格式的非常好的信息) 在您的特定情况下,您在导出的数据目录中很有趣(这是保存有关二进制的导出功能的信息(不仅DLL可以具有导出功能的数据)).此数据结构包含有关导出功能总数,导出功能的地址列表,名称(如果存在)和导出功能的序数
14 2024-04-26
编程技术问答社区
我怎样才能包括我的非托管dll需要的kernel32.dll等dll呢?
我一直在搜索到处搜索,找不到如何做到这一点: 我正在尝试在我的C#代码中使用非托管的DLL.使用依赖性沃克,我发现我还需要包括kernel32.dll,msvcp120d.dll和msvcr120d.dll的导入.目前,我只会称我的dll为 [DllImport("ExApcpp.dll", CallingConvention = CallingConvention.Cdecl)] public extern static string cb_organise_i (int a1); (其中cb_organise_i是dll中的功能.) 我正在使用Xamarin,并继续获取错误 [Mono] Probing '_monodroid_gref_log_delete'. [Mono] Found as '_monodroid_gref_log_delete'. [Mono] DllImport attempting to load: 'ExApc
10 2024-04-26
编程技术问答社区