我有这段代码:
class DLL_API MyClassWrapper
{
private:
MyClass * m_myClass;
public:
MyClassWrapper(SIZE inputSize);
~MyClassWrapper();
inline int OutputSize();
}
typedef std::shared_ptr<MyClassWrapper> MyClassWrapperPtr;
extern "C"
{
DLL_API MyClassWrapperPtr CreatreMyClassWrapper(SIZE inputSize)
{
return std::make_shared<MyClassWrapper>(inputSize);
}
}
Run Code Online (Sandbox Code Playgroud)
但它没有用,有错误:
Error 1 error C2526: CreatreMyClassWrapper: C linkage function cannot return C++ class 'std::shared_ptr<_Ty>'
Run Code Online (Sandbox Code Playgroud)
我理解这个问题,但我该如何解决呢?
我能看到的选项是:
1-不要传递共享指针.这意味着DLL用户应该在使用它之后删除指针.
2-不要使用extern"C":这意味着我必须使用错位名称.
还有其他解决方案吗?
如何在C++ 11 lambda中使用boost线程?
以下代码不起作用:
int sum;
m_workerThread=new boost::thread([]()
{
for(int i=0;i<100;i++)
{
sum=sum+i;
}
}
);
Run Code Online (Sandbox Code Playgroud)
我收到编译错误.
Error 4 error C3493: 'sum' cannot be implicitly captured because no default capture mode has been specified
Run Code Online (Sandbox Code Playgroud)
我怎样才能解决这个问题?
我有一个这样的代码:
# in class definition
std::ofstream m_myFile;
## some where in code
m_myFile.open(filename);
Run Code Online (Sandbox Code Playgroud)
然后在几个地方,我写文件如下:
m_myFile << "some data to file"<<std::endl;
Run Code Online (Sandbox Code Playgroud)
这运行良好,现在我需要向系统添加一个标志,当未设置时,不应创建和写入此文件。我已经检查过,如果我这样做,我可以运行该应用程序:
if(createFile)
{
m_myFile.open(filename);
}
Run Code Online (Sandbox Code Playgroud)
并将写入文件保持原样,我在 Windows 上没有收到任何运行时错误。我的问题是,如果我没有打开文件并写入其流,那么标准行为是什么?
我应该得到运行时错误还是 ofstream 只是忘记数据而不是运行时错误?
我正在使用 Visual Studio 2013。
假设我有一个mat对象,如下所示:
mat =
[75, 97, 66, 95, 15, 22;
24, 21, 71, 72, 34, 66;
21, 69, 88, 72, 64, 1;
26, 47, 26, 40, 95, 24;
70, 37, 9, 83, 16, 83];
Run Code Online (Sandbox Code Playgroud)
我想从它删除一行说第二行有这样的垫子:
[75, 97, 66, 95, 15, 22;
21, 69, 88, 72, 64, 1;
26, 47, 26, 40, 95, 24;
70, 37, 9, 83, 16, 83]
Run Code Online (Sandbox Code Playgroud)
或删除col col say col 3:
[75, 97, 95, 15, 22;
24, 21, 72, 34, 66;
21, 69, 72, 64, 1;
26, 47, …Run Code Online (Sandbox Code Playgroud) 我有这个代码:
mapx.create(image.size(), CV_32FC1);
mapy.create(image.size(), CV_32FC1);
Run Code Online (Sandbox Code Playgroud)
此后mapx和mapy中的值是多少?所有数据都为零吗?
这种类型的初始化怎么样:
cv::Mat mapx(image.size(), CV_32FC1);
Run Code Online (Sandbox Code Playgroud)
我是否需要显式地将每个元素的值设置为零?
如何将每个元素的值设置为-1?
我正在使用 cmake 为 Visual Studio 生成解决方案,并且效果很好。
我注意到作为构建的一部分,它还会在 Visual Studio 上生成一个名为 install 的目标,据说是为了安装构建文件(例如库或包含文件),但是我如何在 Visual Studio 上使用它呢?
我选择这个目标并尝试构建或运行它,但没有任何成功或任何结果(没有将文件复制到其他任何地方等等)。
你能帮我如何在visual studio中使用安装目标来安装生成的文件(在我的例子中它是一个库)。
我正在起诉 cmake gui,但如果需要,我可以使用 cmake 命令行。
我知道它是为我的 cmake 文件上的安装目标生成的,但我的问题是如何运行它?
当我在 VS 解决方案上构建安装时,出现此错误:
Error 3 error MSB3073: The command "setlocal
"C:\Program Files (x86)\CMake\bin\cmake.exe" -DBUILD_TYPE=Debug -P cmake_install.cmake
if %errorlevel% neq 0 goto :cmEnd
:cmEnd
endlocal & call :cmErrorLevel %errorlevel% & goto :cmDone
:cmErrorLevel
exit /b %1
:cmDone
if %errorlevel% neq 0 goto :VCEnd
:VCEnd" exited with code 1. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets 132 5 …Run Code Online (Sandbox Code Playgroud) 我有以下代码:
class myclass
{
std::string str;
public:
void setStr(std::string value)
{
str=value;
}
std::string getStr()
{
return str;
}
}
main()
{
myclass ms;
std::cout<<ms.getStr()<<std::endl;
}
Run Code Online (Sandbox Code Playgroud)
当我编译并运行此代码时,会出现o错误,在Windows中,我总是将str作为“”。
这一直有效吗?
我需要上述行为,因为如果用户未调用set,str将始终为空字符串。
我应该在构造函数中初始化str如下:
class myclass
{
std::string str;
public:
myclass():str(""){}
void setStr(std::string value)
{
str=value;
}
std::string getStr()
{
return str;
}
}
Run Code Online (Sandbox Code Playgroud)
我想确保所有平台上的行为都相同,并且还要确保代码尽可能小巧,整洁。
我有以下代码:
private static readonly DependencyProperty IDProperty = DependencyProperty.Register(
"ID", typeof(int), typeof(DetailDataControl), new PropertyMetadata(-1, new PropertyChangedCallback(IDChanged)));
public int ID
{
get { return (int)GetValue(IDProperty); }
set { SetValue(IDProperty, value); }
}
private static void IDChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
// Do something here!
}
Run Code Online (Sandbox Code Playgroud)
我可以看到,当我更改ID时,行SetValue(IPproperty被调用),但它不会调用IDChanged.
为什么?
我有一个项目通过Web服务公开Entity Framework数据.我想知道我应该使用OData还是编写自己的WCF服务?似乎OData已经死了.我对吗?
我正在扩展访问应用程序,同时一些用户正在使用它.这意味着用户正在更改数据库.我创建了一个访问文件的备份并进行处理.通过这种方式,我可以确保在测试系统时,我没有对更改数据库的系统进行任何更改.但是我只能在用户不使用系统时开发,因此他们不会更改数据库(表中的数据).这不好,因为我不能在用户工作的同时工作.
它有什么解决方案吗?
进行此开发的一种好方法是从表中分离VBA代码.我的意思是拥有一个包含VBA代码的访问文件和一个包含表的访问文件.
可能吗?
我怎样才能做到这一点?
有没有关于如何做到这一点的文件?这是什么最好的做法?
编辑:
在对该问题的第一个评论中链接中提供了良好的信息.