标签: visual-c++

错误LNK2019:未解析的外部符号"public:__thiscall Server :: Server(class boost :: asio :: io_service&)

使用boost :: asio的以下代码将无法编译:

    #ifndef _SERVER_H_
    #define _SERVER_H_

    #include "Connection.h"

    class Server
    {
    public:
      Server(boost::asio::io_service& io_service);

    private:
      void start_accept();

      void handle_accept(Connection::pointer new_connection,const boost::system::error_code& error);


      boost::asio::ip::tcp::acceptor acceptor_;
    };

    #endif
    -------------------------------------------------------------------------------------------------
    #include "Server.h"

    Server::Server(boost::asio::io_service& io_service)
        : acceptor_(io_service, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), 9985)){
            start_accept();
    }

    void Server::start_accept(){

        Connection::pointer new_connection =
          Connection::create(acceptor_.io_service());

        acceptor_.async_accept(new_connection->socket(),
            boost::bind(&Server::handle_accept, this, new_connection,
              boost::asio::placeholders::error));
    }


    void Server::handle_accept(Connection::pointer new_connection,const boost::system::error_code& error){
        if (!error)
        {
          new_connection->start();
          start_accept();
        }
      }
--------------------------------------------------------------------------------------------------
#include <Server.h>
#include <iostream>


int main()
{
  try
  {
    boost::asio::io_service io_service;
    Server server1(io_service);
    io_service.run();
  }
  catch (std::exception& …
Run Code Online (Sandbox Code Playgroud)

c++ linker boost boost-asio visual-c++

0
推荐指数
1
解决办法
6041
查看次数

没有构造函数的实例?

我正在尝试创建我自己的Vector2D类,类似于XNA的类,以存储坐标.按照此处的构造函数示例,我创建了下面的代码.但是,我得到一个错误,说没有与参数列表匹配的构造函数"Vector2D :: Vector2D"的实例.我不知道那是怎么回事......似乎是我的问题?

struct Vector2D {
    Vector2D(int *varX, int *varY);
    ~Vector2D();
    private: int *X, *Y;
};

Vector2D::Vector2D(int *varX, int *varY) {
    X = varX;
    Y = varY;
}

Vector2D::~Vector2D() {
    free(X);
    free(Y);

}
Run Code Online (Sandbox Code Playgroud)

c++ visual-c++

0
推荐指数
1
解决办法
3135
查看次数

static_cast dynamic_cast:期望的常量表达式?

在Visual C++ 2010中,在编译以下代码时,我收到错误消息:

static_cast error C2057:预期的常量表达式.

那有什么不对?

struct A {};
struct B : A {};

struct XX
{
    static const int offset = (long)static_cast<A*>((B*)0x8) - 0x8;
};
Run Code Online (Sandbox Code Playgroud)

感谢AProgrammer,以下内容对于VC 2010是正确的:

struct A {};
struct B : A {};

struct XX
{
    static const int offset;
};

const int XX::offset
 = (long)static_cast<A const*>((B const*)0x8) - 0x8;
Run Code Online (Sandbox Code Playgroud)

c++ visual-c++

0
推荐指数
1
解决办法
989
查看次数

Try/Finally实际上是异常安全的吗?

假设你有一段代码如下:

resource = allocateResource();
try { /* dangerous code here  */ }
finally { free(resource); }
Run Code Online (Sandbox Code Playgroud)

我在这里没有提到任何特定的语言,但我猜Java,C#和C++就是很好的例子(假设你在MSVC++中使用__try/ __finally).

这个例外安全吗?

就个人而言,我不认为这是异常安全的,因为如果进入try之前有异常怎么办?那你的资源就会泄漏.

不过,我已经看过很多次了,我觉得我错过了什么......是吗?或者这真的不安全吗?


编辑:

不是要求allocateResource抛出异常,而是该函数返回之后但 resource分配之前得到异常的情况.

c# java exception-handling exception-safe visual-c++

0
推荐指数
1
解决办法
532
查看次数

使用不同编译器生成的二进制文件速度差异太大(C++)

我在上一个项目中主要使用gcc,今天我决定对不同编译器的结果进行基准测试.

我使用了与Visual Studio 2010和英特尔C++相同的gcc 4.5,MSVC源代码.该程序从文本文件中获取输入,进行大量字符串操作并将输出写入另一个文本文件.

我只计算时间o

编辑:基准测试:
我只计算执行算法的时间,而不是文件io.基本上我放了

    clock_t clock0;
    double z;
    clock0 = clock();

Run Code Online (Sandbox Code Playgroud) 在功能的开头和
    double clock1=(clock() - clock0) / (double) CLOCKS_PER_SEC;


之后.

它从一个小文件(大约200行)开始,几乎没有差异(大约<0.15秒).使用4K行文件,MSVC的输出工作时间为1.23秒,而gcc的输出为0.1.

最后我测试了60K行文件:

  (program compiled with ) Intel compiler ran for 6.7 sec and with  gcc : 1 sec.
Run Code Online (Sandbox Code Playgroud)

现在我只是想知道为什么会有这样的差异(没有优化标志)以及可能是什么原因.(我使用c ++ 0x标准 - 但显然英特尔编译器支持它.)我不确定是否有这样的事实我的代码只用一个编译器编译成快速二进制文件并不令人担忧

编辑2:

我没有在MSVC或Intel的调试模式下编译它

c++ gcc intel visual-c++

0
推荐指数
3
解决办法
566
查看次数

FormatMessage失败,错误代码为317

当我执行以下代码时,它失败,错误代码为317.怎么解决这个问题?我们正在为项目使用Unicode字符集

  char* pszMessgeBuffer = NULL;
  FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | 
        FORMAT_MESSAGE_FROM_SYSTEM | 
        FORMAT_MESSAGE_IGNORE_INSERTS,
        NULL,
        dwErrorId,
        0, // Default language
        (LPTSTR) &pszMessgeBuffer,
        0,
        NULL )
Run Code Online (Sandbox Code Playgroud)

c++ windows-ce visual-c++

0
推荐指数
1
解决办法
3772
查看次数

如何以编程方式获取目录中的文件列表

我已经搜索了所有内容,但是我找不到使用VS C++ 2008的源代码,
您是否有办法以编程方式查找目录中的文件列表?

我在Windows上使用VS 2008 C++.

c++ visual-c++

0
推荐指数
1
解决办法
2万
查看次数

将Unsigned Long转换为String ^

如何将unsigned long转换为String ^?

我试过了

String ^ mystring = marshal_as<String ^>(myunsignedlong)
Run Code Online (Sandbox Code Playgroud)

但它不起作用!

c++-cli visual-c++

0
推荐指数
1
解决办法
4142
查看次数

C++/CLI奇怪的继承问题

我的项目中有3个班级(当然是名字A,B然后C).A是抽象的.它们具有以下关系:
A是基类的B
B基类C

在里面C,我宣布一个变量vector<A*> member_vector;.这导致以下问题:

C3699 :: '*'不能在'A'
C4368 类型上使用此间接:无法定义'member_vector'为托管成员'C':不支持混合类型.

你有没有发现这个错误的线索?我认为循环类的使用可能存在问题,但是,如何克服它呢?

inheritance c++-cli visual-c++

0
推荐指数
1
解决办法
264
查看次数

在MFC Dialog-Based中绘制简单矩形

我写了这段代码在对话框中绘制一个简单的矩形,我还在我的消息映射中添加了ON_WM_PAINT().但它没有显示任何对话给我!如果有人能在代码中告诉我的错误,我真的很感激:

void Ctest4Dlg::OnPaint()
{
    if (IsIconic())
    {
        CPaintDC dc(this); // device context for painting
        // TODO: Add your message handler code here

        SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);

        // Center icon in client rectangle
        int cxIcon = GetSystemMetrics(SM_CXICON);
        int cyIcon = GetSystemMetrics(SM_CYICON);
        CRect rect;
        GetClientRect(&rect);
        int x = 2;
        int y = 2;

        // Draw the icon
        dc.DrawIcon(x, y, m_hIcon);

        //I want to draw a rectangle 
        dc.Rectangle(10,10,50,50);
    }
    else
    {
        CDialogEx::OnPaint();
    }
}
Run Code Online (Sandbox Code Playgroud)

mfc visual-studio-2010 dialogbasedapp visual-c++

0
推荐指数
1
解决办法
9270
查看次数