我们可以在C++/CLI中使用Active Reports 7.0吗?我刚刚开始使用活动报告。我试着用C#编写一份报告,没有任何问题。我尝试在C++/CLI中执行相同的操作,但无法使用“活动报告”工具箱。同时,在运行应用程序时,也会出现许可错误 生成基于代码的设计器无法使用C++/CLI。你也不能用C++写报告中的“脚本”。但是,您可以将报告设计为替代,然后不应该通过类(例如)实例化和调用C++中的任何问题。如下所示:
GrapeCity::ActiveReports::SectionRepor
使用C++/CLI,我想从URL解析主机IP。我如何才能做到这一点?既然您有可用的.NET framework(您真幸运),为什么不使用:
IPHostEntry^ hostInfo = Dns::GetHostByName("www.blah.com");
这在System::Net名称空间中。既然您有可用的.Net framework(您真幸运),为什么不使用:
IPHostEntry^ hostInfo = Dns::GetHostByName("www.blah.com");
这在S
如何取出此阵列中的一行
array< array< int^ >^ >^ sample = gcnew array< array< int^ >^ >{
gcnew array<int>{0, 0, 0, 0, 0},
gcnew array<int>{1, 1, 1, 1, 1},
gcnew array<int>{2, 2, 2, 2, 2},
};
我读了《代码》并读了《分类属性》
c++/cli中的CategoryAttribute是什么?虽然我认为这很清楚,但我有几秒钟的时间来回答
它是一个CLR属性类(通过反射可用的修改器),用于指定属性应在属性网格视图中列出的类别/分组。例如,当你编辑表单时,你会更改文本、大小、停靠等值。通过谷歌:msdn不清楚。这就是我问的原因。我自己可以找到msdn。在谷歌搜索中不需要帮助。。
我在代码中设置了一个multiselect函数,允许我打开多个“.txt”格式的文件。问题是,在通过OpenFileDialog打开这些选定文件后,我将如何读取它们?在下面的代码和“for each”行中,当我使用System::Diagnostics::Debug时,它只显示文件中的数据,而其他文件的数据丢失。我应该如何修改“for each”之后的代码?有人能提供一些建议吗?所选文件为1_1.txt、2_1.txt、3_1.txt。感谢您的回复并提前表示感谢
这是我写的代码
Stream^
人们似乎普遍认为C++/CLI的initonly相当于C#的readonly关键字。但是,以下方面:
ref class C {
C();
void Method();
initonly array<int>^ m_array;
};
C::C() {
m_array = gcnew array<int>(10);
}
void C::Method() {
m_array[0] = 5; // Fails with C3893
我使用operator*在我的C++/CLI类中遵从指针,编译器会对此操作发出警告:
C4383: 'instance_dereference_operator' : the meaning of dereferencing a handle can change, when a user-defined 'operator' operator exists; write the operator as a static function to be explicit about the ope
我有一个.NET库,我正在为它编写一个C++/CLI包装器,以便将公共成员公开给原生世界。其中一个要求是对字符串使用CComBSTR,并完全避免使用std名称空间
为此,我包含了atlbase.h头文件以使用CComBSTR。就包装器或其单元测试而言,一切都运行良好。但是,当我尝试在现有项目中使用包装器头和lib时,我注意到大量编译错误,这些错误都源于不直接属于我正在编译的项目的文件。我在下面发布了其中一些:
C:\Program Files (x86)\Microsoft Visual Stu
我知道不应该在头文件中包含使用名称空间声明,因为它们使项可用于整个项目,这可能会产生不好的结果。但到目前为止,我无法找到头文件中是否允许使用指令的信息。我可以在这个示例中的头文件中使用它吗
这是我的带有函数转发声明的头文件:
#using <System.dll>
System::Security::Cryptography::X509Certificates::X509Certificate2^ GetCertificate(int Index);
如果我不能,包含X509Ce
我需要另一扇窗户的把手
下面是它的代码:
private: System::Void btn_find_Click(System::Object^ sender, System::EventArgs^ e) {
array<Process^>^ ps = Process::GetProcessesByName("Notepad");
IntPtr X = ps[0]->MainWindowHandle;
//这是我的密码
//C.h类
#ifdef CPP_EXP_EXPORTS
#define CPP_EXP __declspec(dllexport)
#else
#define CPP_EXP __declspec(dllimport)
#endif
class CPP_EXP Cppclass;
CPP_EXP Cppclass operator-(Cppclass const &, Cppclass const &);
class CPP_EXP Cppclas
finalize函数是否不代表“在finally中,它将由GC调用”
及
我们是否应该在析构函数和终结器中添加相同的“释放资源”代码?当您编写析构函数(C#中的Dispose方法)时,您应该执行清理对象的所有工作。有了一个正确编写的析构函数,终结器就无事可做了,所以编译器会抑制它
在C#中,模式是编写一个Dispose(bool)方法,并让布尔值指示您是在进行Dispose还是在完成。在C++/CLI中,编译器编写该方法,因此不允许使用该方法。我相信如果不想重复代码,您可以从析构函数调用终结器
下面是microsoft为Directory::GetDirectory提供的示例,我得到了这段代码:
auto k = System::IO::Directory::GetDirectories(installpath);
auto dir = k->GetEnumerator();
while (dir->MoveNext())
{
String^ subdirectory = safe_cast<String^>(dir->Current
我在c++-cli应用程序的托管代码命名空间中声明了一个结构。项目中还包括非托管的cpp文件。我试图调用一个在Un托管C++代码中定义的函数。我从托管世界将结构传递给它。链接器正在抱怨。上面说
错误27错误LNK2019:未解析的外部符号“int\uu cdecl”
N_MMOD(结构DoAT::CAD_CAC_参数*)
(?N_MMOD@@$$FYAHPEAUCAD_CAC)_params@DoATR@@@Z) 引用于
函数“public:int\u clrcall DoAT::atrclas
有谁能给我指出正确的方向吗?我似乎在网络上徒劳地循环
private: System::Void loginButton_Click(System::Object^ sender, System::EventArgs^ e) {
mLogin* lgn;
string text = marshal_as<string>(subjectName->Text);
if (lgn->login(
我如何在CLR项目中替换以下内容
#include <thread>
std::this_thread::sleep_for(std::chrono::milliseconds(60*100));
#包括
std::this_线程::sleep_for(std::chrono::毫秒(60*100));
或者,在代码中保留度量单位,并注意到问题实际上使用秒(但方式怪异),System::Threading::Thread::Sleep(TimeSpan::FromSeconds(
我正在尝试打开子项HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData
我将其定义为:
RegistryKey^ HkeylmPath32 = RegistryKey::OpenBaseKey(RegistryHive::LocalMachine, RegistryView::Registry32);
RegistryKey^ Test = HkeylmPath32->Open
我似乎在删除char*数组时遇到问题。当调用delete[]时,它由于堆损坏而崩溃:
typedef struct _CDB_SYMBOL_INFO {
char * name;
unsigned long address;
unsigned long value;
} CDB_SYMBOL_INFO;
// ...
for each( Symbol ^ symbol in bls->Symbols )
{
我正在尝试将中缀表达式转换为后缀表达式的代码。目前,该程序工作正常,如果我输入例如5+6,它将输出正确答案,即5+6+。当我为例如5+6-3输入多个运算符时,会出现问题,它会输出错误的答案+3-。有人能指出我在哪里出错吗?提前谢谢
void main(){
Stack *s = new Stack;
string input;
cout <<"Enter Expression"<<endl;
cin>>input;
InfixToPostfix(inp
考虑这个例子:
// MyManagedClass.h
#pragma once
using namespace System::Collections::Generic;
using namespace My::Namespace::MyCSharpLib;
namespace My::Namespace::MyManagedLib
{
public ref class MyManagedClass
{
public:
MyCSharpClass m
在C++/CLI中,您可以在托管类中使用本机类型,因为不允许在托管类中保留本机类的成员:在这种情况下,您需要使用指针
以下是一个例子:
class NativeClass
{
....
};
public ref class ManagedClass
{
private:
NativeClass mNativeClass; // Not allowed !
NativeClass * mNativeClass; // OK
auto_ptr<NativeClass>
我希望在C++/CLI中为MemoryStream编写一个void*缓冲区。由于我认为这不可能直接实现,或者我想将此缓冲区转换为数组^,以便能够调用Stream.Write()。我已经查看了封送处理,但是在将void*转换为System::IntPtr时遇到了问题。感谢您的帮助
我无法将void*转换为System::IntPtr。感谢您的帮助
您可以使用:
哦,我从来没想到会这么简单。谢谢!而且速度也很快!
void* voidPointer = GetTheVoidPointer();
Sy
如何在C++/CLI中创建指向数据成员的指针
比如说
ref class team
{
List<teamMember^> members;
teamMember^ leader; //the aim is to make it a pointer to an element in the list
void changeLeader(teamMember^% member) //member is an element from members
{
为什么我不能为托管类型的成员函数或泛型函数声明默认参数C#4.0引入;对于CLI,也有类似的情况
我不明白为什么不能声明这样的方法:
void Optional(int argument = 0);
然后当我调用Optional()时编译器不会将此调用转换为:可选(0)看起来C++/CLI编译器没有为此发出正确的IL指令。它不发出指令.param[1]=int32(0),C#使用该指令识别默认参数。如果在ILDasm中打开生成的程序集,您将看到它
编译的一种方法是使用System::Runti
我已经搜索了system::IO::FileStream类使用的底层系统指针的类型,但找不到确切的答案。这只是应用于文件*的顶部吗?或者是否有其他方法将FileStream^转换为文件*?我找到了FileStream::SafeFileHandle,我可以在上面调用DangerousGetHandle().ToPointer()来获取本机void*,但我只是想确定,如果我将其转换为FILE*,我做的是正确的
void Write(FILE *out)
{
Data->Write(o
标签: C++ Cli
pass-by-referencepin-ptr
我有一个C++/CLI方法,ManagedMethod,其中一个输出参数将由本机方法修改,如下所示:
// file: test.cpp
#pragma unmanaged
void NativeMethod(int& n)
{
n = 123;
}
#pragma managed
void ManagedMethod([System::Runtime::InteropServices::Out] int% n)
{
pin_ptr<int> pinned =
我正在使用listbox进行某些操作,在尝试扫描文件时遇到问题
代码如下:
private: System::Void simpleButton20_Click(System::Object^ sender, System::EventArgs^ e) {
this->scan->Items->Clear();
try {
DirectoryInfo^ info = gcnew DirectoryInfo(Environment::GetFo
我想删除AssemblyInfo.cpp,因为有时会出现一些元数据错误
AssemblyInfo.cpp对什么有用吗?或者可以毫无问题地删除它吗?为什么不修复错误呢?那么,你会犯什么错误呢
此文件提供了一个信息,如使用所构建的程序集所需的版本号。 到目前为止,我在托管C++中没有使用汇编语言。
(我刚刚添加了文件,以有我的C++ DLL的版本信息)。 < P>我发现了这个文件的一个区别:它与调用到的值有关。我正在努力通过将修订号嵌入到SVN存储库中来跟踪二进制文件的版本号。最初我也在更新Asse
我想将以下代码从c#移植到c++/cli:
class MyClass : IEnumerable<int> { ... }
class MyClass:IEnumerable{…}
我试过了
class ref class MyClass : IEnumerable<int>
类引用类MyClass:IEnumerable
但是它似乎不起作用。C++有多种类型的继承。不要忘记指定它,例如:
ref class MyClass : public IEnumerab
标签: C++ Cli
static-librariesclass-librarystatic-classes
我正在使用VS2008类库模板和/clr。
我想要一个托管类库。
当我把库编译成dll时,一切都很好
头文件:multiclasses.h
#pragma once
namespace multiclasses
{
public ref class Class1
{
public: int a, b;
private: int c, d;
public: int add(int a, int b);
private: int hadd(int a
我试图用C++/CLI编写一个简单的hello world应用程序来创建一个Word文档,我在下面发布了这个文档
int main(array<String^>^ args)
{
String^ documentFileName=L"Hello4.docx";
WordprocessingDocument ^myDoc = WordprocessingDocument::Create(documentFileName, WordprocessingDocumentTy
我面临着这个问题,我试图解决它,但我无法满足我需要你的帮助。。这是我的代码:
#pragma endregion
private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
y=Convert::ToInt16(textBox1->Text);
c=Convert::ToInt16(textBox3->Text);
a=Convert::ToDoub
在C++/CLI中,无法创建托管lambda(就像在C#中一样),因此无法捕获托管变量。您可以创建常规方法(而不是lambda),但仍然无法捕获托管变量
在C++/CLI代码中是否有标准的变通方法?换句话说,我正在寻找一种标准模式,可以在C++/CLI中使用它从C#执行以下操作:
class A{}
B类
{
void Foo()
{
A=新的A();
Func
如果你看一个C#lambda的反编译,你会发现C#编译器做的事情和你的选项2一样。创建一堆单用途类很烦人,但这是我的建议
对于C#l
因此,我有一个包装器,如下所示:
包装纸
#pragma once
#include "Engine.h"
namespace Wrapper
{
public ref class EngineWrapper
{
public:
EngineWrapper();
virtual ~EngineWrapper();
protected:
!EngineWrapper();
private:
我正在为一个学校项目使用C++/CLI,我需要将一些数据导出为Excel格式(xlsx)。问题是,此代码包含的部分(如AddNewPart)在Visual Studio中以红色下划线(它表示指定的类没有成员AddNewPart),但代码已编译且应用程序已运行,但结果是xlsx文件已损坏(当我尝试用excel打开它时,它表示已损坏)
SpreadsheetDocument^doc=SpreadsheetDocument::Create(路径,SpreadsheetDocumentType::工作簿
目标:制作一个按钮,用于更改选定文本的字体样式。
我现在拥有的:带有按钮和文本框的表单
private: System::Void Button2_Click(System::Object^ sender, System::EventArgs^ e)
{
if (textBox1->SelectionLength > 0)
{
textBox1->SelectedText->FontStyle =
}
}
我试图在微软的网站上
假设我有一个名为IMyInterface的C#接口,定义如下:
// C# code
public interface IMyInterface
{
void Foo(string value);
string MyProperty { get; }
}
// C++/CLI header file
ref class MyConcreteClass : IMyInterface
{
public:
};
假设我还有一个C++/CLI类,MyConcreteClass,它实现了这个
似乎非托管C++/CLI代码的速度要慢得多。基本上我创建了两个控制台应用程序。一个是标准win32控制台应用程序,另一个是CLR控制台应用程序
这是我为测试编写的代码。我在所有版本的测试中都保持代码完全相同
const int NumberOfTests = 10000000;
void GrowBalance(int numberOfYears)
{
std::cout<<"Called"<<std::endl;
DWORD startTime = GetTick
我在MSDN上的某个地方读到,与C#的“is”关键字等效的是dynamic#u cast,但这并不是真正等效的:它不适用于值类型或泛型参数。例如,在C#中,我可以写:
void MyGenericFunction<T>()
{
object x = ...
if (x is T)
...;
}
有一种更简单的方法吗?< p>可以使用安全性> /Cuff>在本地C++中使用 DyrimeCase> ,并捕获Stase::ValueStudio异常。就兼
我必须在这个项目中使用unsinged char数据类型,而不是String^。
有没有办法更正我的代码
//Piece of my code
namespace VCCDC {
using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace S
标签: C++ Cli
constantscopy-constructordeep-copy
我正在开发一个通用的循环缓冲区,但在复制构造函数方面遇到了一个障碍(请参见下面的代码示例)
使用名称空间系统;
///一种通用循环缓冲区,具有固定大小的内部缓冲区,允许调用者将数据推送到缓冲区,再次弹出数据并提供对任何元素的直接索引访问。
通用的
公共参考类循环缓冲
{
受保护的:
数组^m_buffer;///用于存储数据的内部缓冲区。
unsigned int m_resultsInBuffer;///一个计数器,记录缓冲区中当前保存的结果数
T m_nullValue;///用于表示缓冲区
我是托管代码新手,我需要使用C++/CLI将指向不同结构的指针数组传递到windows窗体,但它不起作用
我的问题是在托管阵列中,如何正确访问其元素
代码顺序:
array<void*> ^ ptr;//here ptr value is undefined , type array<void*> ^
ptr = gcnew array<void*> (2);// length 0x2 , 0x0 and 0x1 values are undefined of
我有以下代码
ref class A
{
typedef ref struct All
{
std::string x;
}All_t;
};
在我的程序中,我以以下方式使用它
A::All_t t;
t.X = "H";
此声明将错误抛出为
error C4368: cannot define 'x' as a member of managed 'A::All': mixed types are not supported
我知道我在托管代码中声明了本机变量,这是不允许的,但现在
我有以下代码:
Internal::ManagedInputData ^getManagedInputData() const { return mInputData; }
private:
gcroot<Internal::ManagedInputData^> mInputData;
如果我把getter注释掉,错误就会消失
好几个小时我都想不出是什么问题,请有人帮忙。以下代码编译时没有任何错误:
#include <gcroot.h>
namespace
我从非托管库中包括两个文件:
//MyCLIWrapper.h
#include "C:\PATH\TO\UNMANAGED\Header.h"
#include "C:\PATH\TO\UNMANAGED\Body.cpp"
然后,我为非托管库函数编写CLI实现:
//MyCLIWrapper.h
// includes ...
void MyCLIWrapper::ManagedFunction()
{
UnmanagedFunction(); // this function is
我试图弄清楚如何在C++/CLI中正确清理对象
我已经阅读或略读了这两篇文章(,),并且看了又看了一些其他问题
我有各种各样的信息:
终结器应该清理非托管资源(这样当对象被垃圾收集时,所有东西都会被清理)
析构函数应该清理托管资源(删除Foo或Foo.Dispose()?)并调用终结器(根据)
析构函数和终结器都可以多次调用(参见第26页8.8.8的末尾)
如果析构函数被调用,终结器将不再被调用(根据)(不是由CLR调用,也就是说,您仍然可以自己调用它)
析构函数将调用基类析构函数(参见第25页
我是C++/CLI新手,正在尝试使用多个分隔符拆分System::String^
System::String^ = 65 kb (65,546 bytes)
Split
System::String^ = 65546
我发现这段代码非常棒,但它只适用于std::string,不允许我转换System::string^
有什么想法吗?您使用的是.NET类System.String。您需要一个.NET答案:有用吗?
std::string s = "65 kb (67,873 bytes)";
我知道有两个类:管理类和价值类
值类就像普通C++类,其对象可以被创建来保存数据。
托管类是由垃圾收集器管理的内存。
问题:
无法创建托管类的对象,只能创建句柄。为什么会这样?
请给我一个简单的例子?这只是一个对象创建还是其他什么?
这并不是说您只为托管类创建句柄,托管类的实例或对象是在托管堆上创建的,并且您被赋予了访问该实例的句柄
完整的答案是一个维基条目,但我会尝试让你了解这里的问题是什么
托管类和值类是C++/CLI.Net类型的类。与C和.Net相关的参考文档在这里仍然有效,可能会回答一
我有一个程序,它逐行遍历一个输入文件,将其显示在windows窗体上,然后是一个操作按钮,将结果发布到输出文件
我希望能够使用stream::seek,所以当我关闭应用程序并返回到它时,它会转到我打开的输入的最后一行,这样我就不必每次都从一开始就开始
这是我当前的代码:
static System::IO::StreamReader ^fileName = nullptr;
public: System::Void StartBtn_Click(System::Object^
这是我的代码,我似乎无法在文件中写入数据
StreamWriter sw = gcnew StreamWriter(Application::StartupPath + "\\Employee\\" +""+NameE->Text + "" +NumberE->Text + "" +EmailE->Text + ".txt" , true);//Path to write .txt file
sw.WriteLine(label1->Text + " " + N
上一页 1 2 3 4 5 6 ...
下一页 最后一页 共 23 页